I'm using bash touch to change the date and time of a file. It works correctly if I simply specify the date and time. If, however, I use a relative time I get unexpected behavior.
$ 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 Note that although I asked for 1 hour earlier and then 1 hour later, it gave 2 hours earlier and 4 hours earlier respectively. Any help would be appreciated.
1 Answer
When you do your touch, you do no specify the timezone. If you do, all your date arithmetic works ok.
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