web-dev-qa-db-ja.com

Ruby文字列から日付への変換

Ruby on Railsで問題が発生しました。フォーマットTue, 10 Aug 2010 01:20:19 -0400 (EDT)の文字列を日付オブジェクトに変換しようとしています。

とにかくこれを行うことができますか?.

ここに私が見て、運が悪かったのは次のとおりです。

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. 慢性パーサー
  3. Ruby:文字列を日付に変換する
  4. Rubyを使用してテキストから日付を解析する

これで私を助けてください。

67
dkris

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

TimeDateに変換する簡単な方法が見つかりませんでした。

127
klew
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")

する必要があります:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')
13
steenslag
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
str.to_date
=> Tue, 10 Aug 2010
8
Wadester

試すことができます 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"]
1
Sergey Chechaev