In the database EST timezones (eg. Etc/GMT+5) is stored with the hour offset and not the minute offset in the database.
That means when the get_user_timezone_offset function gets the record and divides with minutes per hour the offset is completely off.
8:30 CET becomes 6:25 Etc/GMT+5 because the offset is calculated to -0.083333333333333
Update the timezone information in the database to minutes,