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

ben*_*ben 2 ruby date

我怎么能转换"Sat Nov 06 05:48:16 +0000 2010"'11-06-2010'Ruby中?我试过了

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

但我得到这个错误:

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'
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?感谢阅读.

Ste*_*ven 6

通过我阅读文档,您的使用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"
Run Code Online (Sandbox Code Playgroud)