1. ホーム
  2. ruby

[解決済み] Rubyで日付文字列をパースする

2022-02-09 19:39:09

質問

文字列 20120119 というフォーマットで日付を表します。 'YYYYMMDD' .

この文字列をパースして、日付を表すRubyオブジェクトに変換し、今日の日付に対する差分など、基本的な日付計算ができるようにしたいのです。

バージョン1.8.6を使用しています(要件)。

解決方法を教えてください。

を使用することができます。 Date.strptime という、Rubyの標準ライブラリに用意されているメソッドを使います。

require 'date'
string = "20120723"
date = Date.strptime(string,"%Y%m%d")

また、コメントで提案されているように Date.parse この場合、ヒューリスティックは正しく機能するからです。

require 'date'
string = "20120723"
date = Date.parse(string)

どちらも ArgumentError は、日付が有効でない場合

require 'date'
Date.strptime('2012-March', '%Y-%m')
#=> ArgumentError: invalid date

Date.parse('2012-Foo') # Note that '2012-March' would actually work here
#=> ArgumentError: invalid date

時間や分なども表現したい場合は 日付時間 . また、DateTimeは parse メソッドと同じように動作します。 Date . 同じことが strptime .