如何在Ruby中将“Sat Nov 06 05:48:16 +0000 2010”转换为'11 -06-2010'?

时间:2010-11-08 00:18:03

标签: ruby date

如何在Ruby中将"Sat Nov 06 05:48:16 +0000 2010"转换为'11-06-2010'?我试过了

Date.strptime("Sat Nov 06 05:48:16 +0000 2010", '%m-%d-%Y')

但是我收到了这个错误:

ArgumentError (invalid date):
  /Users/ben/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/date.rb:1688:in `new_by_frags'
  /Users/ben/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/date.rb:1713:in `strptime'

我正在使用ruby 1.9.2p0(2010-08-18修订版29036)。

我做错了什么?感谢阅读。

2 个答案:

答案 0 :(得分:6)

在我阅读documentation时,您对strptime的使用可能有误。似乎第二个参数描述了第一个参数的格式,导致对第一个参数进行非常严格的解析。

所以你可以明确地将你的第一个参数的格式写入第二个,你应该没问题。

更简单的解决方案可能只是使用Date.new。然后,Date.strftime应该准确地为您提供所需内容。

irb(main):001:0> require "date"
=> true
irb(main):002:0> Date.new("Sat Nov 06 05:48:16 +0000 2010").strftime('%m-%d-%Y')
=> "11-06-2010"

答案 1 :(得分:1)

require 'time'
Time.parse("Sat Nov 06 05:48:16 +0000 2010").strftime('%m-%d-%Y') # => "11-05-2010"