首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为我的Rails应用程序提供通用时间支持?

如何为我的Rails应用程序提供通用时间支持?
EN

Stack Overflow用户
提问于 2012-05-07 11:31:45
回答 2查看 245关注 0票数 2

我正在构建一个Rails应用程序,用户可以在其中发布他们的know.The表单的面试细节,有一个输入字段的面试时间,即日期时间选择器,我想给这个应用程序提供通用的支持。

实际问题:

假设我已经在生产server.Then中配置了IST时区,如果来自日本的用户选择了将在IST时间zone.The结果中解析的面试时间,则面试时间将是不正确的。

显示正确的面试时间。

1.我是否需要从用户那里获取时区?(可能是一个复选框)

2.是否有任何其他选择可自动检测时区?

谢谢各位:)

如果有什么不清楚的地方,请在问题下面添加评论.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-07 11:49:15

我也有类似的问题。我保留了默认的rails配置,因此所有时间都存储在DB中的UTC中,我使用了来自ActiveSupport::时区的以下方法:

  • 当我需要从表单中保存日期时,我使用local_to_utc将日期从本地转换为UTC: ActiveSupport::TimeZonemy_timezone.local_to_utc(date)
  • 当我需要显示DB的日期时,我使用 ActiveSupport::TimeZonemy_timezone.utc_to_local(date)

这样,数据库中保存的所有日期都以UTC格式保存,但由用户在本地时间处理,这对于每个用户来说是不同的。您可以将时区存储在User级别(DB中的string字段),和/或使用选择助手生成选择字段。

票数 3
EN

Stack Overflow用户

发布于 2012-05-07 13:12:56

Baldrick的回答是正确的--你应该将时间存储在UTC,并将每个用户的时区存储在用户的记录中。

此外,用户通常希望看到的是当地时间在当地的位置。

为此,在存储UTC时间时,还要存储创建事件的用户的时区。

所有这一切的棘手之处在于,MySQL和许多其他数据库不使用日期/时间来存储时区。因此,除非您显式地将时区信息存储在不同的字段中,否则时区信息将丢失。

因此,您需要数据库中的两个字段:

代码语言:javascript
复制
event_time_utc: Datetime, # UTC timezone for when the event happened
event_timezone: string # the timezone of where the event happened
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10481338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档