2010-11-08 52 views
2

如何在Ruby中將"Sat Nov 06 05:48:16 +0000 2010"轉換爲'11-06-2010'?我試過如何在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' 

我使用的紅寶石1.9.2p0(2010-08-18修訂29036)。

我在做什麼錯?感謝閱讀。

回答

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" 
+0

啊,我現在明白了。非常感謝你的幫助! – ben 2010-11-08 00:40:56

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