我有一个我正在努力的应用程序,它将拥有全国(可能是全球)的客户。我第一次使用这个应用程序处理时区,这有点令人头疼。我对在不同时区处理用户的策略感到好奇。
现在,用户可以在创建帐户时选择他们的时区,并在应用程序控制器中将Time.zone
设置为应用程序范围:
# application_controller.rb
def set_timezone
if current_user
Time.zone = current_user.time_zone
else
Time.zone = "Pacific Time (US & Canada)"
end
end
我希望用户能够自动创建他们的事件并使用他们的时区设置时间,然后让其他时区的其他用户进行调整,以便他们看到正确的时间。
我很难尝试谷歌解决这个问题(看似常见的问题),并对处理这个问题的策略感到好奇。我想像Rails有一些特色。
答案 0 :(得分:0)
我建议将问题分为两个方面:
数据输入:您应该使用单个时区(我建议使用UTC)保存事件以及在数据库中使用时间的任何其他模型,这意味着每次创建模型时,您必须从首选时区转换为数据库时区。 确保应用和数据库设置在同一时区。
数据输出:您必须创建一个在您的应用中共享的方法,它在模型,演示者等中可以使用并可以切换数据从db时区到首选时区。 这应该是数据离开服务器之前的最后一步。
该方法将具有以下内容:
time.in_time_zone("America/New_York")
通过这种方式,您的应用程序可以在一个时区进行计算,并且用户可以将它们放在首选位置。