From info coreutils 'date invocation'
When a relative element causes the resulting date to cross the border where the clock has been adjusted, usually for daylight saving time, the corresponding date and time are adjusted accordingly.
Fuzz . , "2003-07-31 -1 " 2003-07-01, 2003-06-31 - . , 15- . :
$ date -R
Thu, 31 Jul 2003 13:02:39 -0700
$ date --date='-1 month' +'Last month was %B?'
Last month was July?
$ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
Last month was June!
, . 24 , , "TZ" 'UTC0', .
, -1 hour ,
$ date --date='-1 hour 2018-03-03 12:16:13' "+%Y:%m:%d %H:%M:%S"
2018:03:03 11:16:13