【发布时间】:2017-08-04 16:55:16
【问题描述】:
我在 Linux 上,我正在尝试使用日期工具将特定天数、小时数和分钟数添加到指定的日历日期:
例如:
$ date -d "2013-01-01 + 305 days 12 hours 30 minutes" +"%Y%m%d%0k%M%S"
20131102123000
将结果拆分,以便我们阅读:
2013-11-02 12:30:00
这似乎工作正常。但是,当我添加 306 天而不是 305 时:
$ date -d "2013-01-01 + 306 days 12 hours 30 minutes" +"%Y%m%d%0k%M%S"
20131103113000
拆分:
2013-11-03 11:30:00
注意现在小时显示的是 11 而不是 12!但我告诉它要增加 12 小时……让我再增加一天:
$ date -d "2013-01-01 + 307 days 12 hours 30 minutes" +"%Y%m%d%0k%M%S"
20131104123000
并再次拆分结果:
2013-11-04 12:30:00
现在时间回到了我的预期。我已经使用日期版本 8.12 和 8.4 对此进行了测试,两者的结果相同。我做错了什么?
【问题讨论】:
-
可能是因为夏令时的变化。检查时区并将
%z %Z添加到date模式以查看正在使用的时区 -
这肯定是由于 2013 年 11 月 3 日的夏令时切换timeanddate.com/time/change/usa/new-york?year=2013
-
你们回答了。我试图从 UTC 日期添加,但该工具将我的请求解释为本地时区。这将解释 DST 开关。
-
使用
-u或--utc选项将日期解释为UTC
标签: linux date calendar gnu utc