在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]
实际上, man date
没有列出此选项 .
任何人都知道这是为什么,或任何其他(简单)方式让我打印ISO 8601格式的日期?谢谢!
8 回答
Mac OS X有一个预编译的
coreutils
软件包,可在以下位置获得:http://rudix.org/packages-abc.html#coreutils .
进一步采取其他答案,您可以在〜/ .bashrc或〜/ .zshrc中添加一个函数来添加日期
-I
标志:你可以用
或者对于完全ISO-8601 compliant date,请使用以下格式之一:
输出:
要么
输出:
在GNU日期
date -I
与date +%F
相同,-Iseconds
和-Iminutes
也包括UTC偏移的时间 .-u
就像TZ=UTC
.+00:00
可以替换为Z
.这些也是有效的ISO 8601日期或时间格式:
这些不是:
适用于GNU和BSD日期的简短替代方案是:
coreutils包提供GNU版本的工具 . 安装:
你可以看到提供的内容:
请注意它附带日期:
这是标准的GNU日期命令,因此它将采用-I开关:
只需使用普通的
date
格式化选项:编辑:包括时间和UTC,这些是等价的:
它's not a feature of Bash, it'是
date
二进制文件的一个特性 . 在Linux上,您通常会拥有date
的GNU coreutils版本,而在OSX上,您将拥有BSD遗留实用程序 . GNU版本当然可以作为可选包安装,或者您可以自行更换 - 我相信它应该是一个简单的单行,例如在Perl .