【发布时间】:2019-10-14 23:31:18
【问题描述】:
我想要得到的是
$ xxx 2019-10-11 <= insert your command
1570752000
输出是 2019 年 10 月 11 日 00:00:00 UTC 的时间戳。我在 gnu 中找到了一个很好的方法,但在 bsd 中没有
【问题讨论】:
-
注意“bash”标签是无关紧要的。
我想要得到的是
$ xxx 2019-10-11 <= insert your command
1570752000
输出是 2019 年 10 月 11 日 00:00:00 UTC 的时间戳。我在 gnu 中找到了一个很好的方法,但在 bsd 中没有
【问题讨论】:
这应该可行:
date -j -f '%F %T %Z' '2019-10-11 00:00:00 U' '+%s'
-j 用于试运行;即它防止date 更改系统日期和时间,-f 用于指定输入格式,+%s 用于将给定日期转换为自纪元以来的秒数。
【讨论】:
(master) * [origin ] $ date -j -f '%Y-%m-%d' '2019-10-11' '+%s' 1570837643 并且每次给出不同的数字
在 NetBSD 上可以使用:
TZ=GMT0 date -d '2019-10-11 00:00:00' '+%s'
注意使用TZ 环境变量来指定输入时区,而不是尝试从输入中解析它(尽管可能有可能从输入中解析出更正确格式化的时区,但这样就剩下了输出应该格式化在哪个时区的问题)。
在 MacOS 上,您可以尝试类似于 Oguz 建议的方法:
TZ=GMT0 date -j -f '%Y-%m-%d %H:%M:%S' '2019-10-11 00:00:00' '+%s'
【讨论】: