Thank you for your help! Yes, this is not a date command bug. The "--utc" option solved the problem. Adding "UTC" in the date string did not work well, which is why I was stuck...
Adding daylight savings time or any other time zones does not correct this issue. I still see the hour result being incremented by -1 or 1, whether it's in March, October, July,...