如何从DateTime值中删除区域?

我有这个DateTime:

=> Fri, 03 Feb 2012 11:52:42 -0500 

如何删除ruby中的区域(-0500)? 我只想要这样的东西:

 => Fri, 03 Feb 2012 11:52:42 

时间总是有一个区域(没有一个没有意义)。 您可以选择在使用DateTime#strftime打印时忽略它:

 now = DateTime.now puts now #=> 2012-02-03T10:01:24-07:00 puts now.strftime('%a, %d %b %Y %H:%M:%S') #=> Fri, 03 Feb 2012 10:01:24 

有关用于构造特定格式的奥术代码,请参阅Time#strftime

或者,您可能希望将DateTime转换为UTC以获得更一般的表示。

除了接受的答案,您还可以将相同的strftime参数添加到DATE_FORMATS Rails哈希,以便您在应用程序中标准化输出格式。

config/initializers/datetime_formats.rb

 Time::DATE_FORMATS[:nozone] = '%a, %d %b %Y %H:%M:%S' 

然后在你的代码中你可以做到:

 Time.zone.now.to_s(:nozone) 

您甚至可以将其设为默认值:

 Time::DATE_FORMATS[:default] = '%a, %d %b %Y %H:%M:%S' Time.zone.now.to_s 

日期还有一个单独的哈希:

 Date::DATE_FORMATS[:default] = '%a, %d %b %Y' 

这个function已存在多年,但似乎鲜为人知。

当一切都失败了

 zoned_time = Time.now unzoned_time = Time.new(zoned_time.strftime("%Y").to_i,zoned_time.strftime("%m").to_i,zoned_time.strftime("%d").to_i,zoned_time.strftime("%H").to_i,zoned_time.strftime("%M").to_i,zoned_time.strftime("%S").to_i,"+00:00")