在Bash脚本中,我想打印ISO 8601格式(最好是UTC)的当前日期时间,似乎这应该像date -I一样简单:
http://ss64.com/bash/date.html
但这在我的Mac上似乎不起作用:
$ date -I
date: illegal option -- I
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
事实上,男人约会并没有列出这个选项。
有人知道这是为什么吗,或者有其他(简单的)方法让我以ISO 8601格式打印日期吗?谢谢!
在GNU date date -I与date +%F相同,- isecseconds和-Iminutes也包括UTC偏移量的时间。
$ date +%F # -I or +%Y-%m-%d
2013-05-03
$ date +%FT%T%z # -Iseconds or +%Y-%m-%dT%H:%M:%S%z
2013-05-03T15:59:24+0300
$ date +%FT%H:%M # -Iminutes or +%Y-%m-%dT%H:%M%z
2013-05-03T15:59+0300
-u类似于TZ=UTC。+00:00可以用Z代替。
$ date -u +%FT%TZ
2013-05-03T12:59:24Z
这些也是有效的ISO 8601日期或时间格式:
20130503T15 (%Y%m%dT%M)
2013-05 (%Y%m)
2013-W18 (%Y-W%V)
2013-W18-5 (%Y-W%V-%u)
2013W185 (%YW%V%u)
2013-123 (%Y-%j, ordinal date)
2013 (%Y)
1559 (%H%M)
15 (%H)
15:59:24+03 (UTC offset doesn't have to include minutes)
这些不是:
2013-05-03 15:59 (T is required in the extended format)
201305 (it could be confused with the YYMMDD format)
20130503T15:59 (basic and exteded formats can't be mixed)