Ruby on Railsで問題が発生しました。フォーマットTue, 10 Aug 2010 01:20:19 -0400 (EDT)
の文字列を日付オブジェクトに変換しようとしています。
とにかくこれを行うことができますか?.
ここに私が見て、運が悪かったのは次のとおりです。
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
これで私を助けてください。
Date.parse
メソッドの何が問題になっていますか?
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
date = Date.parse str
=> #<Date: 4910837/2,0,2299161>
puts date
2010-08-10
うまくいくようです。
ここでの唯一の問題はタイムゾーンです。 UTCタイムゾーンの日付が必要な場合は、Time
オブジェクトを使用することをお勧めします。文字列があると仮定します。
str = "Tue, 10 Aug 2010 01:20:19 +0400"
puts Date.parse str
2010-08-10
puts Date.parse(Time.parse(str).utc.to_s)
2010-08-09
Time
をDate
に変換する簡単な方法が見つかりませんでした。
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
する必要があります:
Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
str.to_date
=> Tue, 10 Aug 2010
試すことができます https://rubygems.org/gems/dates_from_string :
構造内の日付を検索:
text = "get car from repair 2015-02-02 23:00:10"
dates_from_string = DatesFromString.new
dates_from_string.find_date(text)
=> ["2015-02-02 23:00:10"]