Wed Sep 22 13:15:02 -0400 2010
转换为这种格式2010-08-23 13:15:02 -0400
Ruby on Rails的:我怎么这个日期
左边是Time.now
的权利30.days.ago = \
Wed Sep 22 13:15:02 -0400 2010
转换为这种格式2010-08-23 13:15:02 -0400
Ruby on Rails的:我怎么这个日期
左边是Time.now
的权利30.days.ago = \
您可以使用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"
我添加了自定义格式(使用Time#formatted_offset),因为据我所知在strftime中没有格式化选项来显示时区偏移量('+0000')。 Rails在内置格式化类型中使用[类似策略](http://api.rubyonrails.org/classes/Time.html)。 (详见DATE_FORMATS [:rfc2822]) – sluukkonen 2010-09-22 18:06:15
两者是不同的数据类型。
>> Time.now.class
=> Time
>> 30.days.ago.class
=> ActiveSupport::TimeWithZone
使用strftime方法对其进行格式化。
如果你想在数据库格式的格式,那么你可以使用:
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"
所以...什么是你的问题?你只是想要在右边的格式输出? – rfunduk 2010-09-22 17:19:05
是的,导致右边的格式是MySQL使用的格式。 – NullVoxPopuli 2010-09-22 17:29:10