在Linux中添加日历日期的时间会产生错误的结果

时间:2017-08-04 16:55:16

标签: linux date calendar gnu utc

我在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对此进行了测试,两者都有相同的结果。我做错了什么?

1 个答案:

答案 0 :(得分:1)

我试图从UTC日期添加,但我没有将此指定给该工具。这是解决方案:

date --utc -d "2013-01-01 + 307 days 12 hours 30 minutes" +"%Y%m%d%0k%M%S"

由于UTC不遵守DST,因此小时内不会发生任何变化。