我有一个日期,以ISO格式YYYY-MM-DDTHH:SS(例如2014-02-14T12:30)表示。我想使用Linux Bash中的date命令将其转换为自纪元以来的秒数。
所有日期都是针对UTC区域设置的。
我知道这个问题很容易可以被归类为重复问题......有数十亿个关于将日期从一种格式转换为另一种格式的问题,但是我找不到我的特定情况。
谢谢……
使用GNU date(来自GNU coreutils软件包),使用-d
指定要解析的日期,使用%s
指定时代秒数。
$ date -d"2014-02-14T12:30" +%s
1392381000
请注意,这将解释要解析的日期为您的本地时区。如果您想让date
使用特定的时区,您必须指定,可以通过变量TZ(更改date
的默认时区)或在日期字符串中进行指定。对于UTC:
$ TZ=UTC date -d"2014-02-14T12:30" +%s
1392381000
或者按照 ISO 8601 格式的字符串中:
$ date -d"2014-02-14T12:30Z" +%s
1392381000
请参考维基百科的ISO 8601词条,了解如何在日期字符串中指定其他时区。
如果你安装了gdate
,处理带有纳秒精度时区的日期字符串会更容易。
安装coreutils
,你将同时获得gdate
。
在Mac上brew install coreutils
gdate --date="2010-10-02T09:35:58.203Z" +%s%N
variable = $(gdate --date="2010-10-02T09:35:58.203Z" +%s%N)
。echo $variable