次の行で無効な日付エラーが発生する理由を誰かが説明できますか?
Date.strptime("3082013",'%-m%d%Y')
私の理解で%-m
は、先頭の のない月を探す必要があります0
。ただし、このコードを実行すると戻ります
ArgumentError: invalid date
着信日付の形式を変更できないと仮定すると、この状況に対処する最善の方法は何ですか?
次の行で無効な日付エラーが発生する理由を誰かが説明できますか?
Date.strptime("3082013",'%-m%d%Y')
私の理解で%-m
は、先頭の のない月を探す必要があります0
。ただし、このコードを実行すると戻ります
ArgumentError: invalid date
着信日付の形式を変更できないと仮定すると、この状況に対処する最善の方法は何ですか?
左にゼロを追加します。
Date.strptime("3082013".rjust(8,'0'),'%-m%d%Y')
問題はstrptime
、マイナス (-) フラグをサポートしていないことです。
月/日/年の間に何らかのセパレーターを追加する必要があります。そうでなければ、Ruby は "3082013" が 2013 年 3 月 8 日なのか 2013 年 8 月 30 日なのかをどのように知るのでしょうか?
場合によっては、少しレベルを下げて、Date.strptime
あなたのためにできることをしなければなりません:
"3082013".scan(/(\d+) (\d{2}) (\d{4})/x).first
=> ["3", "08", "2013"]
"308213"
次のMMDDYYYY
形式の場合:
mon, day, year = "03082013".scan(/(\d+) (\d{2}) (\d{4})/x).first.map(&:to_i)
=> [3, 8, 2013]
または、フォーマットされていることがわかっている場合は、次のようにDDMMYYYY
切り替えます。mon
day
day, mon, year = "03082013".scan(/(\d+) (\d{2}) (\d{4})/x).first.map(&:to_i)
=> [3, 8, 2013]
次に、Date オブジェクトを作成できます。
Date.new(year, mon, day)
=> #<Date: 2013-03-08 ((2456360j,0s,0n),+0s,2299161j)>