【Rails】Date型↔︎文字型変換
こんにちは、マリンです。
最近よく日付関係を扱うことがよくあるのですが、
Date(日付)型と文字列型の変換方法をよく忘れるので、
備忘録としてここに書かせていただきます。
Date型 → 文字列型
Date型から文字列型への変換方法。
strftime
today = Date.today # 2018-12-05 Date型の日付(変換前) today.strftime("%Y年 %m月 %d日") # "2018年 12月 05日" 文字列型の日付(変換後)
Date型のオブジェクトに対し、strftime
メソッドを使うことで文字列型に変換できます。
引数にフォーマットを指定することで、その指定通りの形に変換できます。
ちなみに、%Y
を%y
にすると年の下二桁だけを出せます。
フォーマット一覧は以下の通りです。
*文字は基本的に英語表記です。
フォーマット | 変換後の出力 |
---|---|
%A | 曜日の名称 |
%a | 曜日の省略名 |
%B | 月の名称 |
%b | 月の省略名 |
%c | 日付と時刻 |
%d | 日(01-31) |
%H | 24時間制の時(00-23) |
%I | 12時間制の時(01-12) |
%j | 年中の通算日 (001-366) |
%M | 分(00-59) |
%m | 月を表す数字(01-12) |
%p | 午前または午後(AM,PM) |
%S | 秒(00-60 *60はうるう秒) |
%U | 週を表す数。最初の日曜日が第1週の始まり(00-53) |
%W | 週を表す数。最初の月曜日が第1週の始まり(00-53) |
%w | 曜日を表す数。日曜日が0(0-6) |
%X | 時刻 |
%x | 日付 |
%Y | 西暦を表す数 |
%y | 西暦の下2桁(00-99) |
%Z | タイムゾーン |
%% | パーセント文字 |
文字列型 → Date型
文字列型からDate型への変換。
to_date
to_date
メソッドを使う。
str_today = "2018-12-05" # 文字列型の日付(変換前) str_today.to_date # Date型の日付(変換後) => Wed, 05 Dic 2018
to_date
は楽なのでよく使います。
ただ、西暦の下二桁のみには対応していません。
strptime
Date型のstrptimeを使う。
Date.strptime('2018-12-05', '%Y-%m-%d') # (文字列型の日付, 日付を表すフォーマット) => Wed, 05 Dic 2018
to_date
に比べたらちょっと複雑になりますが、
こちらは西暦下二桁のみにも対応可能です。
Date.strptime('18-12-05', '%y-%m-%d') => Wed, 05 Dic 2018
まとめ
日付についてはDateやらDateTimeやらいろいろあっていつも混乱します。
また取得したものがDateなのか文字列なのか?とか。
計算するときに型が違うとエラーになっちゃいますしね(汗)
日付に関する型の違いもいずれまとめられたらと思います。