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 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.