- blogs:
- cles::blog
2015/08/01

日本語の日付を Date に変換するには


Ruby で文字列を Date に変換するには Date.parse() が使えますが、たまに上手くいかないことがあるので、任意のフォーマットを指定して Date に変換する方法がないかと思ってリファレンスを隅々まで読んでみたら Date.strptime() というちょうど良いモノが用意されていることが分かったのでメモ。
singleton method DateTime.strptime (Ruby 2.1.0)
strptime(str = '-4712-01-01', format = '%F', start = Date::ITALY) -> Date
与えられた雛型で日付表現を解析し、 その情報に基づいて日付オブジェクトを生成します。
Date._strptime も参照してください。 また strptime(3)、および Date#strftime も参照してください。
ちょうど strftime() の逆をやるメソッドみたいですね。こんな感じで日本語の日付を parse できます。
$ irb
irb(main):001:0> require 'date'
=> true
irb(main):002:0> d = Date.strptime('2015年 8月 1日','%Y年 %m月 %d日')
=> #<Date: 4914471/2,0,2299161>
irb(main):003:0> d.to_s
=> "2015-08-01"
† 実は C に srtptime() があった
リファレンスに strptime(3) を参考にしろということが書いてあったので、実はこの機能は C のライブラリ由来なんですね。まったく使ったことがなかったので知りませんでした。man を調べてみると確かに strptime() という char* を struct tm に変換する関数があります。フォーマットの指定部分についても以下のように解説がありますね。
Man page of STRPTIME
format 引き数は、 scanf(3) で使われているような、 フィールドディスクリプターとテキスト文字で構成されている文字列である。 個々のフィールドディスクリプターは % とそれに続く文字からなり、 後者にフィールドディスクリプターを置き換える内容を指定する。 format 文字列中の他の全ての文字には、入力文字列にマッチする文字がなければならない。 フォーマット文字列中にある空白は例外であり、 入力文字列中の 0 個以上の空白とマッチする。 2 つのフィールドディスクリプターの間には、 空白・英字・数字がなければならない。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/7797
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(113669)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112298)
3 . 年次の人間ドックへ(111769)
4 . 2023 年分の確定申告完了!(1つめ)(111349)
5 . 三菱鉛筆がラミーを買収(111238)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112298)
3 . 年次の人間ドックへ(111769)
4 . 2023 年分の確定申告完了!(1つめ)(111349)
5 . 三菱鉛筆がラミーを買収(111238)
cles::blogについて
Referrers