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 curtidas

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 curtidas

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 curtida

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

Acho que, no contexto de uma comunidade fortemente localizada, você deveria poder especificar o fuso horário para o aniversário de cadastro (cakeday) no Discourse. Alterar o fuso horário do servidor não é algo que possamos fazer.

Isso é uma questão delicada e não tenho certeza de como resolvê-la, mesmo agora que permitimos que os usuários especifiquem “fusos horários”.

Se você se inscreveu em um fórum na Austrália no 2 de janeiro de 2019 às 8h.

  • Seu aniversário de 1 ano, segundo o “cakeday”, será em 1 de janeiro de 2020.

  • Quando você visitar a página de aniversários às 8h do dia 2 de janeiro, verá aniversários de 1 de janeiro de 2020 em vez do dia 2.

Acho que o que estamos pedindo aqui é usar fusos horários “locais” definidos nos perfis dos usuários para levar isso em conta.

Ou seja:

  • Seu aniversário de 1 ano deve ser 2 de janeiro de 2020, já que seu fuso horário local no perfil de usuário é o da Austrália.

  • Quando você visitar a página de aniversários no dia 2, deverá ver o dia 2.


Por enquanto, acho que apoio a solução simples: ao renderizar a página de aniversários, verificar o fuso horário local do usuário atual e usar essa data em vez da data UTC atual, para casos em que o usuário está logado. Deve ser uma mudança bem simples, talvez apenas duas linhas de código.

@techAPJ, você pode cuidar disso?

8 curtidas

Acredito que @tgxworld já corrigiu isso para considerar o fuso horário por meio de:

e

EDIT: Estou no fuso horário UTC+5:30, mas tenho um deslocamento de 6 horas, então estou vendo alguns casos extremos para usuários que criaram contas entre 23:30 e 00:00. Investigando.

6 curtidas

Corrigido via:

8 curtidas