我的 Rails 应用程序中的日期/时间字段有一个 date_select
和 time_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/