我正在构建一个Rails应用程序,用户可以在其中发布他们的know.The表单的面试细节,有一个输入字段的面试时间,即日期时间选择器,我想给这个应用程序提供通用的支持。
实际问题:
假设我已经在生产server.Then中配置了IST时区,如果来自日本的用户选择了将在IST时间zone.The结果中解析的面试时间,则面试时间将是不正确的。
显示正确的面试时间。
1.我是否需要从用户那里获取时区?(可能是一个复选框)
2.是否有任何其他选择可自动检测时区?
谢谢各位:)
如果有什么不清楚的地方,请在问题下面添加评论.
发布于 2012-05-07 11:49:15
我也有类似的问题。我保留了默认的rails配置,因此所有时间都存储在DB中的UTC中,我使用了来自ActiveSupport::时区的以下方法:
local_to_utc将日期从本地转换为UTC:
ActiveSupport::TimeZonemy_timezone.local_to_utc(date)这样,数据库中保存的所有日期都以UTC格式保存,但由用户在本地时间处理,这对于每个用户来说是不同的。您可以将时区存储在User级别(DB中的string字段),和/或使用选择助手生成选择字段。
发布于 2012-05-07 13:12:56
Baldrick的回答是正确的--你应该将时间存储在UTC,并将每个用户的时区存储在用户的记录中。
此外,用户通常希望看到的是当地时间在当地的位置。
为此,在存储UTC时间时,还要存储创建事件的用户的时区。
所有这一切的棘手之处在于,MySQL和许多其他数据库不使用日期/时间来存储时区。因此,除非您显式地将时区信息存储在不同的字段中,否则时区信息将丢失。
因此,您需要数据库中的两个字段:
event_time_utc: Datetime, # UTC timezone for when the event happened
event_timezone: string # the timezone of where the event happenedhttps://stackoverflow.com/questions/10481338
复制相似问题