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 Me gusta

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 Me gusta

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 me gusta

…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 me gusta

Creo que, en el contexto de una comunidad muy localizada, se debería permitir especificar la zona horaria para el «cakeday» de Discourse. Cambiar la zona horaria del servidor no es algo que podamos hacer realmente.

Esto es un asunto complicado y no estoy seguro de cómo resolverlo, incluso ahora que permitimos que los usuarios especifiquen «zonas horarias».

Si te registraste en un foro en Australia el 2 de enero de 2019 a las 8:00 a. m.:

  • Tu primer aniversario según el «cakeday» será el 1 de enero de 2020.

  • Cuando visites la página de aniversarios a las 8:00 a. m. del 2 de enero, verás aniversarios del 1 de enero de 2020 en lugar del 2.

Supongo que lo que estamos pidiendo aquí es que se utilicen las zonas horarias «locales» definidas en los perfiles de los usuarios para tener esto en cuenta.

Es decir:

  • Tu primer aniversario debería ser el 1 de enero de 2020 porque tu zona horaria local en tu perfil de usuario es Australia.

  • Cuando visites la página de aniversarios el 2, deberías ver el 2.


Por ahora, creo que apoyo la solución trivial, que consiste en que, al renderizar la página de aniversarios, se consulte la zona horaria local del usuario actual y se utilice esa fecha en lugar de la fecha UTC actual, para los casos en los que un usuario ha iniciado sesión. Debería ser un cambio bastante sencillo, quizás de dos líneas de código.

@techAPJ, ¿puedes encargarte de esto?

8 Me gusta

Creo que @tgxworld ya solucionó esto para tener en cuenta la diferencia horaria mediante:

y

EDITO: Estoy en la zona horaria UTC+5:30, pero tengo un desfase de 6 horas, por lo que estoy observando algunos casos límite para usuarios que crearon su cuenta entre las 23:30 y las 00:00. Estoy investigándolo.

6 Me gusta

Arreglado mediante:

8 Me gusta