linux 触摸相对时间给出错误结果

linux touch relative time giving wrong result

我正在使用 bash 触摸更改文件的日期和时间。如果我简单地指定日期和时间,它就可以正常工作。但是,如果我使用相对时间,则会出现意外行为。

$ date -R -r test.txt
Sat, 28 May 2022 02:56:22 -0400
$ touch -d '27 May 2022 05:31:12' test.txt
$ date -R -r test.txt
Fri, 27 May 2022 05:31:12 -0400
$ touch -d '27 May 2022 05:31:12 - 1 hour' test.txt
$ date -R -r test.txt
Fri, 27 May 2022 03:31:12 -0400
$ touch -d "27 May 2022 05:31:12 + 1 hour" test.txt
$ date -R -r test.txt
Fri, 27 May 2022 01:31:12 -0400

注意,虽然我要求提前1小时和1小时后,但它分别提前了2小时和4小时。 任何帮助将不胜感激。

当您执行 touch 时,您没有指定时区。如果你这样做,你所有的日期算法都可以正常工作。

EX:

$ touch -d '27 May 2022 05:31:12' test.txt
$ date -R -r test.txt
Fri, 27 May 2022 05:31:12 -0400
$
$ touch -d '27 May 2022 05:31:12 -0400 - 1 hour' test.txt
$ date -R -r test.txt
Fri, 27 May 2022 04:31:12 -0400