ruby-on-rails - 如何让我的 Rails 时间输入字段遵守服务器时区?

标签 ruby-on-rails ruby input timezone

我的 Rails 应用程序中的日期/时间字段有一个 date_selecttime_select,我在本地以开发模式运行。我的问题是我输入的日期/时间与服务器实例的时区不一致。

例如,我的计算机时钟当前显示为 2013 年 9 月 19 日下午 5:34。(我处于中部时区,以防它有任何影响。)如果我填写我的表格时使用等同于“September 19, 2013 5:34 PM”,我看到它被解析为“2013-09-19 17:34:00 UTC”。但是,Time.now 返回“2013-09-19 17:38:00 -0600”,而 Time.current 返回“2013-09-19 23:38: 58 世界协调时”。基本上,该表单假定时间为 UTC,但未将其与我服务器的 UTC 时间对齐(相差 6 小时)。

如何确保表单的输入转换为正确的区域偏移量?

最佳答案

该表单并未假定时间为 UTC。它使用您将 Rails 应用程序设置为的任何内容(默认为 UTC)。玩这个直到你弄明白了。下面是我的机器。操作系统在 PST (-700) 中。 Rails 应用设置为 UTC。

> Time.now
 => 2013-09-19 20:16:40 -0700
> Time.zone.now
 => Fri, 20 Sep 2013 03:16:42 UTC +00:00
> Time.parse("September 19, 2013 5:34 PM")
 => 2013-09-19 17:34:00 -0700
> Time.zone.parse("September 19, 2013 5:34 PM")
 => Thu, 19 Sep 2013 17:34:00 UTC +00:00
> Time.use_zone('America/Chicago') {Time.zone.parse("September 19, 2013 5:34 PM")}
 => Thu, 19 Sep 2013 17:34:00 CDT -05:00

关于ruby-on-rails - 如何让我的 Rails 时间输入字段遵守服务器时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18906682/

相关文章:

ruby - 让 ruby​​ 对象响应任意消息?

jquery - 将 Checkbox 变成图标 IE9+

javascript - 带有 jQ​​uery 和 Masked 输入插件的电话掩码

ruby-on-rails - RoR rspec 测试失败,错误为 <top (required)> 中的“block (2 levels)”

arrays - 将数组中的每一项乘以另一个数组中的每一项

c - 简单的 C 井字输入错误

ruby-on-rails - 链接到事件管理员中的自定义多态关联操作

ruby-on-rails - rails 和雷 : Pagination showing duplicate results

ruby-on-rails - 一次只允许 ActiveRecord 模型中的多个属性之一出现

ruby-on-rails - 'belongs_to` 关联上的自动保存无法保存关联模型