Rubyで文字列を日時に変換する方法
前提
ruby 1.9.2
やりたいこと
- 文字列を日時に変換(空ならnilにする)
- しかし、文字列はどのような形式で来るか分からない
方法
- 標準ライブラリのdateを使う
- まずDateTime.parse()し、それで処理しきれなければDateTime.strptime()
- それでだめなら、nil
require 'date' # 文字列を日付に変換 def custom_parse(str) date = nil if str && !str.empty? #railsなら、if str.present? を使う begin date = DateTime.parse(str).to_s # parseで処理しきれない場合 rescue ArgumentError formats = ['%Y:%m:%d %H:%M:%S'] # 他の形式が必要になったら、この配列に追加 formats.each do |format| begin date = DateTime.strptime(str, format) break rescue ArgumentError end end end end return date end # str_arrayには様々な形式の文字データが入ってくると仮定 str_array = ["2005-06-05T09:47:31+09:00", "2012:06:09 12:23:09"] str_array.each do |str| date = custom_parse(str) puts date end