A user, barryvan, noticed that the anniversaries page on their forum is showing dates one day in the past. They suspect this might be due to their time zone (GMT+8) differing from the server’s time zone. Others agree that this is an issue, particularly for localized communities.
jomaxro points out that Discourse already localizes times elsewhere in the UI, so this inconsistency feels like a bug. pfaffman wonders if fixing this issue would require accounting for 24+ different time zones.
A possible solution is to display anniversaries based on the user’s local time zone, as suggested by sam. techAPJ mentions that a fix has been implemented to consider time zone offsets.
However, techAPJ later notes that some edge cases remain, particularly for users who created their accounts between 23:30 and 00:00. These issues have been addressed through subsequent commits.
The discussion highlights the need for a more nuanced approach to handling time zones in Discourse, especially for localized communities.
That’s one way to look at it I guess. But I’m assuming the users are queried on page load, so there’s really only “one” set at a time.
Here’s a better example. The post you just made shows up for me as “June 8, 2017 12:45 AM”. If I was to fly across the country to California, I’d expect that post to show as “June 7, 2017 9:45 PM”.
…and I just earned the “anniversary” badge this morning. This does feel like a bug to me.
Could it be mitigated by simply changing the timezone of the server to something more applicable for my community? We’re (mainly) in Australia, so processing everything as, say, GMT+8 or GMT+10 would make this all feel less odd.
Since the server doesn’t know a user’s time zone, maybe the easiest fix for this would be to award the badge one day later? For some, that will mean they get it late, but that will probably not be experienced as a bug as much as an early award is.
Another option might be to simply specify in the UI that these times are based on the server’s time zone.