我的Rails应用中有一个date_select
和time_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小时差异)对齐。
如何确保表单的输入转换为正确的区域偏移?
答案 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