当我进行算术运算时,为什么日期输出 X-3 天而不是 X-2 天

当我进行算术运算时,为什么日期输出 X-3 天而不是 X-2 天

在我的一个脚本中,我需要找到给定日期后 2 天的日期。我很长时间以来一直在使用下面的内容,没有任何问题,但这只是我第一次收到错误,该错误通过日期命令深入到错误的值。

$ date -d 20140331" - 2 days" +%Y%m%d

预期产出

20140329

实际产量

20140328

使用“- 2 days”给出了预期的输出,但仍然努力找出为什么减去秒不起作用?

UNIX 日期输出

笔记:我的流程在中午运行,因此我没有看到任何极端边界条件,例如 1 秒到处缩短。

更多信息

$ date --version
date (GNU coreutils) 5.97
Copyright (C) 2006 Free Software Foundation, Inc.

答案1

由于您的服务器运行在 BST 时区,因此这个问题与昨天发生的从 GMT 到 BST 的最近转变有关。周日凌晨 01:00,时钟向前移动了 1 小时(我们“损失”了一个小时 - 因此周日只有 23 小时),从 GMT 移到了 BST。如果您说“两天前”,则考虑到了这一点,日期是正确的。但是,如果您向后移动 172800 秒(48 小时),那么缺少的小时会导致您回到星期六的 23:00。

相关内容