Timeクラス
- 日付を扱うクラスで組み込みの標準ライブラリ(requireは不要)
- 高速に動作をします。
- UNIX時間に依存するため2038年問題があります。(Ruby1.9.2で対応はされました。)
- タイムゾーンがロケールに依存する。
nowメソッド
現在日時を取得する。
zoneメソッド
どのタイムゾーンを使用しているかチェックできる。(例:Time.now.zone)
newメソッド
任意の日時の日時を生成する。
1 |
Time.new(yyyy,mm,dd,hh,mm) |
strftimeメソッド
好きなフォーマットの日時を生成できます。例えば下記のような感じで使えます。
1 |
Time.new().strftime('%Y年 %m月 %d日') |
%で指定できる文字には様々な種類があります。
Dateクラス
- 日時を扱うクラス
- 使う場合はrequire文が必要になる。
- 作成されたオブジェクト自体にはタイムゾーンの情報を持っていないのでzoneメソッドはない。
todayメソッド
今日の日付を取得できる。
newメソッド
任意の日付を生成できる。
1 |
Date.new(yyyy,mm,dd) |
strftimeメソッド
好きなフォーマットの日付を生成できます。使える%はTimeクラスとほぼ同等です。
DateTimeクラス
- 日時を扱うクラス
- Timeに比べると遅い。
- UNIX時間に依存しないのでより柔軟に日時を表現できます。
- タイムゾーンが世界標準時に依存する。
ActiveSupport::TimeWithZoneクラス
- Railsで日時を扱う場合に採用されるクラスです。
- タイムゾーンはデフォルトで世界標準時になっています。
Time.now.zone
現在のタイムゾーン
タイムゾーンを変えるには?
タイムゾーンを変更するには下記の2つの方法があります。
アプリケーションの設定ふぁいるで起動時に適切な値にする方法
config/application.rbに以下の設定を追加します。
1 2 3 4 5 6 |
module アプリ名 class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 5.2 config.time_zone = 'Asia/Tokyo' ★追加 ‥ |
Railsアプリの中で動的にタイムゾーンを変更する方法
タイムゾーンを日本に変更したい場合は下記のように指定します。
1 |
Time.zone = 'Asia/Tokyo' |
Railsで日時フォーマットを共通化するには?
下記のファイルを作成します。
config/initializers/time_formats.rb
例えば、日本語のフォーマットであれば下記のように記述します。
1 |
Time::DATE_FORMATS[:date_jp] = '%Y年 %m月 %d日' |
Railsの再起動が必要になります。Railsの実装の中では下記のように呼び出します。
1 |
Timeクラス.to_s(:date_jp) |
この記事へのコメントはありません。