質問

Time.parseを使用して、文字列からTimeオブジェクトを作成しています。

何らかの理由で

Time.parse("05-14-2009 19:00")

引数の範囲エラーを引き起こしますが、

Time.parse("05-07-2009 19:00")

しない

アイデアはありますか

役に立ちましたか?

解決

推測では、文字列の2番目の部分(14)が月であると予想されます。

このリンクは、解析に役立ちます。

他のヒント

文字列の形式がわかっている場合:

Time.strptime(date, format, now=self.now) {|year| ...}   

http://www.ruby-doc.org /core-1.9/classes/Time.html#M000266

問題を解決し、おそらく Time.parse より高速になります。

編集:

Timeクラスから strptime を取得したように見えますが、とにかく Date.strptime を呼び出しました。 Railsを使用している場合は、次のことができます。

Date.strptime("05-14-2009 19:00","%m-%d-%Y %H:%M").to_time

純粋なルビーを使用する場合は、次が必要です:

require 'date'
d=Date._strptime("05-14-2009 19:00","%m-%d-%Y %H:%M")

Time.utc(d[:year], d[:mon], d[:mday], d[:hour], d[:min], 
         d[:sec], d[:sec_fraction], d[:zone])

参照: Ruby on Railsの日付と時刻のフォーマットに関する問題

Time#parse のヒューリスティックのためです。

そして、それは英国系のフォーマットによるものです。

ダッシュ「-」ではmm-dd-yyyyを期待し、スラッシュ「/」ではdd / mm / yyyyを期待します。

この動作は、1.9で意図的に変更されます。 eur、iso、jpの日付標準を達成するため。

この問題を解決するのにおそらく必要ありませんが、自然言語の日付/時刻パーサー Chronicをチェックアウトすることをお勧めします、それは私に数回多くの仕事を節約しました。

おそらく、Day-Month-Year形式を想定しているため、最初の値は14か月目の5日目を指定しようとしています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top