J'ai une application qui utilise beaucoup de fuseaux horaires différents ... elle les place dans un contrôleur et ils changent en fonction de l'utilisateur. Toutes les heures sont stockées en UTC sans horodatage, etc.manutention des rails + postgres et des fuseaux horaires
Je crois savoir que c'est la manière normale pour Rails de gérer les fuseaux horaires. Cela fonctionne bien 99% du temps jusqu'à ce que je devrais faire quelque chose directement avec Postgres, puis le fuseau horaire devient un problème.
Par exemple, cette requête est complètement faux, sauf pour GMT, par exemple dans la zone Heure centrale, en fonction de l'heure fixée, il obtient le mauvais jour:
Events.where("EXTRACT(dow FROM start_at)", Date.today.wday)
Là où je suis en train de trouver toutes les dates qui tombent un certain jour. J'essaie de faire quelque chose comme ça. Je n'ai pas besoin de chercher entre les fuseaux horaires (ils ne seront pas mélangés), mais j'ai besoin de spécifier le fuseau horaire si ce n'est pas UTC pour obtenir des résultats corrects.
User.events.where("EXTRACT(dow FROM start_at AT TIME ZONE ?) = ?", 'UTC', Date.today.wday)
Mais je ne sais pas comment utiliser Time.zone
pour me donner quelque chose qui fonctionnera avec TIME ZONE dans Postgres.
Time.zone.tzinfo travaille parfois ... Postgres travaillera avec « Europe/Varsovie », mais Rails retours Europe - Varsovie '
En général, je ne suis pas beaucoup de chance avec les fuseaux horaires, les pointeurs serait être apprécié.