datetime,time,dateの違いは何なのか調査した
前のRuby on Railsの記事を書いた時に調べる予定だった
「datetime,time,dateの違いは何なのか」について調べた。
muscleprogramers.hatenablog.com
Date型
曜日+日付のデータが出力される。
Tue, 20 Oct 2015
文字列で取得する場合
to_s
メソッドで取得した場合、日付が出力される。
メリット
time型、string型、integer型への変換が可能。
Time型
日付+時刻のデータが出力される。
2015-10-20 19:22:41 +0900
文字列で取得する場合
to_s
メソッドで取得した場合、日付+時間が出力される。
メリット
- date型、string型、integer型への変換が可能。
- Tライブラリを別途読み込む必要がない。
- Datetimeより早い
- サマータイム、うるう秒が扱える
- 数値の1の単位が秒なので、計算がしやすい。
DateTime型
曜日+日付+時刻のデータが出力される。
DateとTimeの表示形式を合わせたイメージ。
Tue, 20 Oct 2015 19:22:43 +0900
文字列で取得する場合
to_s
メソッドで取得した場合、日付+時間が出力される。
メリット
- 時差を確認できる。
- 一番詳細な日時を出せる。
デメリット
- 1の単位が日になるので、1時間が1/24、1分を1/(24*60)…という計算をしなくてはいけない。
- Ruby2.3.0(2020年12月25日のリリース)から非推奨クラスになった。
結論
基本Time型を使用したほうがいい。
dateTimeは非推奨だし、dateはほぼtimeの下位互換なので
余程のことがない限りはtime型を使えばよい。
TimeWithZone型なんてものがあるらしい
RailsにはTimeWithZoneクラスが存在するらしい。
今後はこれを調べよう。