如何使我的rails时间输入字段尊重服务器时区?

时间:2013-09-19 23:40:29

标签: ruby-on-rails ruby input timezone

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

例如,我的计算机时钟目前在2013年9月19日下午5点34分说。(我在中央时区,如果它有任何影响。)如果我填写我的表格,其值等于“九月” 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时间,但没有与我的服务器的UTC时间(6小时差异)对齐。

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

1 个答案:

答案 0 :(得分:4)

表单不假设时间是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