在 Linux 中将时间添加到日历日期会给出不正确的结果
Adding time to calendar date in Linux gives incorrect result
我在 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 对此进行了测试,两者的结果相同。我做错了什么?
我试图从 UTC 日期添加,但我没有在工具中指定它。这是解决方案:
date --utc -d "2013-01-01 + 307 days 12 hours 30 minutes" +"%Y%m%d%0k%M%S"
由于 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 对此进行了测试,两者的结果相同。我做错了什么?
我试图从 UTC 日期添加,但我没有在工具中指定它。这是解决方案:
date --utc -d "2013-01-01 + 307 days 12 hours 30 minutes" +"%Y%m%d%0k%M%S"
由于 UTC 不遵守夏令时,因此小时不会发生变化。