Ruby on Rails:如何转换这个日期

时间:2010-09-22 17:16:45

标签: ruby-on-rails

Wed Sep 22 13:15:02 -0400 2010格式2010-08-23 13:15:02 -0400

左边是Time.now

右边是30.days.ago = \

3 个答案:

答案 0 :(得分:2)

您可以使用Time类中的to_s(:db)方法将其转换为数据库友好格式。

Time.now.to_s(:db) # => "2010-09-22 17:50:41"

如果您确实需要时区偏移信息,可以将自定义格式添加到Time::DATE_FORMATS,例如

Time::DATE_FORMATS[:db_with_zone_offset] = lambda { |time|
  time.strftime("%Y-%m-%d %H:%M:%S #{time.formatted_offset(false)}")
}

之后你可以简单地调用

Time.now.to_s(:db_with_zone_offset) => # "2010-09-22 17:48:21 +0000"

答案 1 :(得分:1)

两者都是不同的数据类型。

>> Time.now.class
=> Time
>> 30.days.ago.class
=> ActiveSupport::TimeWithZone

使用strftime方法对其进行格式化。

答案 2 :(得分:1)

如果您想使用数据库格式的格式,那么您可以使用:

Time.now
=> Wed Sep 22 19:54:24 +0200 2010
Time.now.to_s(:db)
=> "2010-09-22 19:54:48"
Time.now.utc.to_s(:db)
=> "2010-09-22 17:55:16"