如何在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)。
我做错了什么?感谢阅读。
答案 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"