[英]Best way to save datetime via api in rails
我需要通过POST localhost:3000/visit
类的API保存datetime(visited_at)属性,但是问题是我不知道如何处理时区。 我看到有关铁路的时区支持的解释这里 ,但是,当你通过导轨形式创建它。 我想知道是否可以通过自己的api处理此问题。
有3个相关问题:
您的问题主要是关于(1),但(2)和(3)也很重要。
对于(2),我会将所有内容标准化为UTC,以便夏时制等不会对您造成影响。 在config / environment.rb中,为了安全起见,我将设置ENV['TZ'] = 'utc'
。
对于(3),如果要在本地时区向用户显示时间,则必须将其存储在User模型中,然后适当地设置时间格式。
现在,对于(1),您应该能够解析传入的时间(例如,使用Time.parse),然后将其标准化为UTC。 Time.parse可以处理各种描述时区的方式。 (我将指定您的API来声明如果未指定时区,则采用UTC)。
例如
>> ENV['TZ']
=> "utc"
>> Time.now.to_s
=> "Wed Jan 13 16:43:00 +0000 2010"
>> Time.parse( "Wed Jan 13 16:43:00 +0500 2010" )
=> Wed Jan 13 11:43:00 +0000 2010
>> Time.parse( "Wed Jan 13 16:43:00 -0500 2010" )
=> Wed Jan 13 21:43:00 +0000 2010
>> Time.parse( "Wed Jan 13 16:43:00 EST 2010" )
=> Wed Jan 13 21:43:00 +0000 2010
>> Time.parse( "Wed Jan 13 16:43:00 CST 2010" )
=> Wed Jan 13 22:43:00 +0000 2010
>> t1 = "Wed Jan 13 16:43:00 CST 2010"
=> "Wed Jan 13 16:43:00 CST 2010"
>> t2 = "Wed Jan 13 17:43:00 EST 2010"
=> "Wed Jan 13 17:43:00 EST 2010"
>> Time.parse(t1) == Time.parse(t2)
=> true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.