Ruby on rails 我应该总是用哪个来解析日期时间?日期时间,时间,时区?
在Rails中,我看到有几个选项可以解析日期和日期时间。为了通过ActiveRecord将日期持久化到数据库中,解析日期的最佳实践是什么?为什么Ruby on rails 我应该总是用哪个来解析日期时间?日期时间,时间,时区?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,在Rails中,我看到有几个选项可以解析日期和日期时间。为了通过ActiveRecord将日期持久化到数据库中,解析日期的最佳实践是什么?为什么 Time.zone.parse(...) Time.parse(...) DateTime.parse(...) ActiveRecord自动设置的时间(例如,在处创建的时间和在处更新的时间)作为实例返回 根据文档,ActiveSupport::TimeWithZone和Time具有相同的API,因此我将使用Time 另一个不相关的注意事项是,您可以
Time.zone.parse(...)
Time.parse(...)
DateTime.parse(...)
ActiveRecord自动设置的时间(例如,在处创建的时间和在处更新的时间)作为实例返回 根据文档,
ActiveSupport::TimeWithZone
和Time
具有相同的API,因此我将使用Time
另一个不相关的注意事项是,您可以调用字符串的方法to_time
和to_datetime
:
"2012-05-09".to_time # => 2012-05-09 00:00:00 UTC
"2012-05-09".to_datetime # => Wed, 09 May 2012 00:00:00 +0000
如果只想写入ActiveRecord,请使用Time.zone.parse 应该避免使用日期时间。如果您正在处理日期,则应改用Date.parse 除此之外,它还取决于输入是否带有时区信息、当前时区设置为什么以及您是否希望在数据中包含时区 Time.zone.parse将返回ActiveSupport::TimeWithZone,默认为UTC
> Time.zone.parse("12:30")
=> Thu, 10 May 2012 12:30:00 UTC +00:00
Time.parse将返回一个时间,如果在输入中指定,则返回一个带区域的时间,或者返回本地时间
> Time.parse("12:30")
=> 2012-05-09 12:30:00 -0700
有关Ruby时间比较和精度的更详细说明,请阅读以下博客:
Time.zone.parse如果Rails应用程序默认为UTC(在environment.rb中),则将“defaults”解析为UTC。。。Time.parse默认为服务器本地时区偏移量,与Rails应用程序无关。嘿,
Time.zone.parse
正确获取Rails默认时区,而DateTime返回UTC。所以+1,但是“应该避免使用DateTime”还有其他原因吗?还有和,也就是说在处理日期或遥远的将来的日期时使用DateTime。