繁体   English   中英

在Rails中通过api保存日期时间的最佳方法

[英]Best way to save datetime via api in rails

我需要通过POST localhost:3000/visit类的API保存datetime(visited_at)属性,但是问题是我不知道如何处理时区。 我看到有关铁路的时区支持的解释这里 ,但是,当你通过导轨形式创建它。 我想知道是否可以通过自己的api处理此问题。

有3个相关问题:

  1. 解析传入时间(在您的API中)
  2. 在您的数据库中存储时间
  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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM