【发布时间】:2014-03-13 17:58:08
【问题描述】:
我有一个 ISO 格式 YYYY-MM-DDTHH:SS 的日期(例如 2014-02-14T12:30)。我想在 linux bash 中仅使用 date 命令在几秒内转换它。
所有日期均指 UTC 语言环境。
我知道这个问题很容易重复......关于将日期从一种格式转换为另一种格式有数十亿个问题,但我找不到我的特定场景
谢谢你...
【问题讨论】:
标签: linux bash date timezone epoch
我有一个 ISO 格式 YYYY-MM-DDTHH:SS 的日期(例如 2014-02-14T12:30)。我想在 linux bash 中仅使用 date 命令在几秒内转换它。
所有日期均指 UTC 语言环境。
我知道这个问题很容易重复......关于将日期从一种格式转换为另一种格式有数十亿个问题,但我找不到我的特定场景
谢谢你...
【问题讨论】:
标签: linux bash date timezone epoch
使用 GNU 日期(来自 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 on Wikipedia,了解如何在日期字符串中指定其他时区。
【讨论】:
如果您安装gdate 来处理具有纳秒精度时区的日期字符串会更容易
install coreutils 你会得到gdate
在 Mac 上 brew install coreutils
gdate --date="2010-10-02T09:35:58.203Z" +%s%N
这在将时间序列值插入 influxdb 时特别有用
在 shell 脚本中variable = $(gdate --date="2010-10-02T09:35:58.203Z" +%s%N)
echo $variable
【讨论】: