The mysql session timezone that civi sets does not observe daylight saving (aka The Contact Logging civireport can show the wrong time)
Pulling this out as a separate issue from #2122. It's also different from that issue in that here the value stored in the database is correct, just the display is wrong.
Mysql/mariadb often do not ship with named timezones populated (i.e. the mysql.time_zone table and related tables are empty). So when civi sets the mysql timezone for the session it calculates an offset instead (e.g. '+01:00'), based on "now". Offsets don't know about DST rules, so when it's converted for display based on that "now" offset, it will be wrong if "now" is on the other side of DST from the date that was stored in the database. Example:
Suppose log_civicrm_contact has a log_date with a value of March 8, 2022 12:34, created in timezone America/New_York. When viewed on March 9, 10, 11, etc it displays correctly.
When viewed on, say, March 16, civi will set the mysql timezone as '-04:00', which is different from what it was on March 8 ('-05:00'). Therefore when it displays, it shows 13:34 instead of 12:34.
This only affects timestamp columns. Datetime columns don't do any conversion based on session timezone.
The code where this happens is at https://github.com/civicrm/civicrm-core/blob/1754e1752eb8e516ec846a438005f6fcb55be247/CRM/Utils/System/Base.php#L760
Note also that getTimeZoneString() does different things for different CMSs, so you may experience the issue slightly differently depending on the install.