4

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

例如,我的计算机时钟当前显示为 2013 年 9 月 19 日下午 5:34。(我在中央时区,以防它有任何影响。)如果我填写表格的值等于“2013 年 9 月 19 日” 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 小时时差)对齐。

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

4

1 回答 1

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
于 2013-09-20T03:19:47.573 回答