Subscribed unsubscribe Subscribe Subscribe

k-yamadaのブログ

プログラミングのメモ

文字列からDate型に変換する

「01:38:43 Feb 14, 2012 PST」という文字列をDate型に変換します。

■失敗例: DateTime.parseで自動変換する

require 'date'
DateTime.parse("01:38:43 Feb 14, 2012 PST")
 => #<DateTime: 2012-02-15T01:38:14+00:00 (106098014947/43200,0/1,2299161)>  日付がずれてしまった。

■成功例: DateTime.strptimeを使って、フォーマットを指定して変換する

require 'date'

def parse_date(str_date)
  format ='%H:%M:%S %b %d, %Y %Z'
  DateTime.strptime(str_date, format)
end

parse_date "01:38:43 Feb 14, 2012 PST"
 => #<DateTime: 2012-02-14T01:38:43-08:00 (212195972323/86400,-1/3,2299161)>  正常に変換出来た

違うフォーマットの文字列を変換した場合は、以下のサイトを参考にして下さい。
http://www.namaraii.com/rubytips/?%C6%FC%C9%D5%A4%C8%BB%FE%B9%EF#l3

■おまけ: DateTime型と文字列を相互変換する
DateTime型のto_sで取得した文字列は、DateTime.parseでDateTime型に変換出来る。

DateTime.now.to_s == DateTime.parse(DateTime.now.to_s).to_s
 => true