“01/02/2022 + 1 month”表示输出是 2/2/2022 date 命令中的错误吗?
Is "01/02/2022 + 1 month" saying output is 2/2/2022 a bug in the date command?
on bash(GNU bash,版本 4.4.20(1)-release (x86_64-pc-linux-gnu)),我使用以下操作在特定日期添加一个月(请注意格式):
date +%d/%m/%Y -d "01/02/2022 + 1 month"
它给出了 02/02/2022(错误的是将 +1 月份添加到日期)。
然后我试了:
date +%d/%m/%Y -d "01/02/2022 + 2 month"
它给出了 02/03/2022(错了一半,它是将 +1 加到日和 +1 到月)。
相反:
date +%d/%m/%Y -d "02/02/2022 + 1 month"
给出:02/03/2022(正确)。
我找到错误了吗?
没有。您使用了可以用两种方式解释的日期格式,date
(与 bash 无关)选择了与您不同的解释:
- 1 月 2 日 + 1 个月 = 2 月 2 日,好的。
- 1 月 2 日 + 2 个月 = 3 月 2 日,好的。
第三个日期在两种解释中是相同的。
请注意,输入格式独立于输出格式。
结论:总是使用+%Y-%m-%d
。它可以按字母顺序排序,并且不会被解释为 +%Y-%d-%m
,因为没有人使用该格式。
on bash(GNU bash,版本 4.4.20(1)-release (x86_64-pc-linux-gnu)),我使用以下操作在特定日期添加一个月(请注意格式):
date +%d/%m/%Y -d "01/02/2022 + 1 month"
它给出了 02/02/2022(错误的是将 +1 月份添加到日期)。 然后我试了:
date +%d/%m/%Y -d "01/02/2022 + 2 month"
它给出了 02/03/2022(错了一半,它是将 +1 加到日和 +1 到月)。 相反:
date +%d/%m/%Y -d "02/02/2022 + 1 month"
给出:02/03/2022(正确)。
我找到错误了吗?
没有。您使用了可以用两种方式解释的日期格式,date
(与 bash 无关)选择了与您不同的解释:
- 1 月 2 日 + 1 个月 = 2 月 2 日,好的。
- 1 月 2 日 + 2 个月 = 3 月 2 日,好的。
第三个日期在两种解释中是相同的。
请注意,输入格式独立于输出格式。
结论:总是使用+%Y-%m-%d
。它可以按字母顺序排序,并且不会被解释为 +%Y-%d-%m
,因为没有人使用该格式。