If you want this to work right, then you need to start thinking the timezone is, like the date format, a user preference. As a user preference it should be saved with the user profile.
The server doesn't need to now what timezone it is since it's a computer. Only (dumb 😊 humans use timezones.
Timestamps must always stored in the server in UTC.
When the system shows the user a date, it must format the date with the the language, the timezone and the format the user has selected it his/her profile.
Dirk, you are missing what I've said when you are saying this: "He also quite likely knows whether a particular event is local to his timezone or local to the server's timezone or local to the creator's timezone."
As I said the timezone is just a way to see the date. The server is always UTC, it shouldn't know about timezones.