Anniversaries: date off by one

I was very pleased this morning to see that it’s my cakeday (on the forum I administer):

And out of curiosity I went to see who else’s cakeday was nearby. Strangely, though, the anniversaries page seems to be a day in the past:

Could it be because I’m in GMT+8?

5 лайков

That’s what I think.

Given that Discourse localizes the times it shows you everywhere else in the UI, I feel this is still a “bug” and should be fixed.

3 лайка

So there are 24+ different cake day sets? That seems crazy.

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”.

1 лайк

…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.

Not a major issue, of course. :wink:

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.

1 лайк

Я считаю, что в контексте сильно локализованного сообщества вы должны иметь возможность указывать часовой пояс для «дня торта» (cakeday) в Discourse. Изменение часового пояса сервера — это не то, что мы можем сделать.

Это сложная задача, и я не уверен, как её решить, даже теперь, когда мы разрешили пользователям указывать «часовые пояса».

Если вы зарегистрировались на форуме в Австралии 2 января 2019 года в 8:00.

  • Ваша годовщина (согласно «дню торта») будет 1 января 2010 года.

  • Когда вы посетите страницу годовщин в 8:00 2 января, вы увидите годовщины от 1 января 2010 года, а не 2-го числа.

Кажется, здесь речь идёт о том, чтобы использовать «локальные» часовые пояса, определённые в профилях пользователей, для учёта подобных ситуаций.

То есть:

  • Ваша годовщина должна быть 1 января 2019 года, так как ваш локальный часовой пояс в профиле пользователя — Австралия.

  • Когда вы посетите страницу годовщин 2-го числа, вы должны видеть 2-е число.


На данный момент я поддерживаю простое решение: при отображении страницы годовщин учитывать локальный часовой пояс текущего пользователя и использовать эту дату вместо даты UTC «сейчас» для случаев, когда пользователь авторизован. Это должно быть довольно простое изменение, возможно, всего пара строк кода.

@techAPJ, не могли бы вы взяться за это?

8 лайков

Я полагаю, что @tgxworld уже исправил это, чтобы учитывать смещение часового пояса, через:

и

РЕДАКТИРОВАНИЕ: Я нахожусь в часовом поясе UTC+5:30, но у меня смещение составляет 6 часов, поэтому я наблюдаю несколько пограничных случаев для пользователей, создавших аккаунт между 23:30 и 00:00. Изучаю это.

6 лайков

Исправлено через:

8 лайков