我正在构建一个 Rails 应用程序,用户可以在其中发布他们知道的面试详细信息。该表单有一个输入字段面试时间,它是日期时间选择器。我想为该应用程序提供普遍支持。
实际问题:
假设我在生产服务器中配置了 IST 时区。那么如果来自日本的用户选择将以 IST 时区解析的采访时间。结果将是不正确的采访时间。
显示正确的采访时间。
1.我需要从用户那里获取时区吗?(可能是一个选择框)
2.是否有其他选项可以自动检测时区?
谢谢大家:)
如果有不清楚的地方,请在问题下方添加评论。
最佳答案
我也有类似的问题。我保留了默认的 Rails 配置,因此所有时间都以 UTC 形式存储在数据库中,并且我使用了 ActiveSupport::TimeZone 中的以下方法:
当我需要保存表单中的日期时,我使用
local_to_utc
将日期从本地转换为 UTC:ActiveSupport::TimeZone[my_timezone].local_to_utc(date)
当我需要显示数据库中的日期时,我使用了
ActiveSupport::TimeZone[my_timezone].utc_to_local(date)
这样,数据库中保存的所有日期均采用 UTC 格式,但由用户按本地时间处理,每个用户的时间可能不同。您可以将时区存储在用户
级别(数据库中的字符串
字段),和/或使用 select helper生成一个选择字段。
关于ruby-on-rails - 如何为我的 Rails 应用程序提供通用时间支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481338/