使い方
参考:
Ruby/Rails の時間に関するメソッドを使用してみた | RE:ENGINES
まとめ
参考:
Ruby と Rails における Time / Date / DateTime / TimeWithZone の違い – Qiita
Time.zone.now / Time.current
参考:
時刻処理では Time.current / Time.zone.local を使う | DoRuby
TimeWithZone
参考:
ActiveSupport::TimeWithZone | Ruby on Rails API [Official]
TimeZone
参考:
ActiveSupport::TimeZone | Ruby on Rails API [Official]
コード:
rails/time_zone.rb at v5.2.3 · rails/rails – GitHub
Time::DATE_FORMATS の使い方
参考:
Rails で日付/時刻のフォーマットを設定する Tips | Rails Webook
to_formatted_s – Time | Ruby on Rails API [Official]
How do I format a date with the “th” suffix, as in, “Sun Oct 5th”? – Stack Overflow
コード:
to_formatted_s – rails/conversions.rb at v5.2.3 · rails/rails – GitHub
「○○分前」の表記をする
参考:
Rails で日時を「xx分前」「xx時間前」表記にする | 酒と涙とRubyとRailsと
Rails で時間を「◯分前」「◯時間前」にフォーマットする – Qiita
Time#strftime
参考:
Rails の strftime チートシート – Qiita
strftime のよく使うテンプレート | TechRacho
Ruby の strftime で月日や時刻の0埋めを行わない書式指定 | ltcmdr927atenablog
strftime – ActiveSupport::TimeWithZone | Ruby on Rails API [Official]
Time#strftime | Ruby リファレンスマニュアル [公式]
曜日を日本語表示する
参考:
午前・午後
strftime
で %p
を使って AM/PM を出力する。
Time.zone.now.strftime("%p")
# => "PM"
Code language: Ruby (ruby)
午前/午後を出力するためにロケールを設定する。
# config/locales/ja.yml
ja:
time:
am: 午前
pm: 午後
formats:
pday: "%p"
Code language: YAML (yaml)
I18n.localize
を使って、午前/午後を出力する。
def localized_pday_ja(time)
I18n.l(time, locale: :ja, format: :pday)
end
localized_pday_ja(Time.current)
# => "午後"
Code language: Ruby (ruby)
参考:
I18n で24時間表記を午前午後表記にする/日本語対応 – Qiita
12 hour AM / PM range for a day – Stack Overflow
TimeWithZone の使い方
タイムゾーンを設定する。
# config/application.rb
class Application < Rails::Application
# ...
config.time_zone = "Tokyo"
# ...
end
Code language: Ruby (ruby)
タイムゾーンを確認する。
$ rails r "puts Time.zone" (GMT+09:00) Tokyo
現在時刻を得る。
Time.zone.now
Code language: Ruby (ruby)
もしくは、
Time.current
Code language: Ruby (ruby)
今日の日付を取得する。
Time.zone.today
Code language: Ruby (ruby)
参考:
Ruby と Rails における Time / Date / DateTime / TimeWithZone の違い – Qiita
Rails での日付操作でよく使うものまとめ – Qiita
Ruby と Rails の日付操作周りについてまとめました – Qiita
Rails の time_zone の設定は initializers/* には書かない – Qiita
now – ActiveSupport::TimeZone | Ruby on Rails API [Official]
today – ActiveSupport::TimeZone | Ruby on Rails API [Official]
beginning_of_day / end_of_day
昨日作成されたレコードを取得する。
yesterday = Time.zone.yesterday
@records = Record.where(
created_at: (yesterday.beginning_of_day)..(yesterday.end_of_day)
)
Code language: Ruby (ruby)
もしくは、
@records = Record.where(
created_at: Time.zone.yesterday.all_day
)
Code language: Ruby (ruby)
参考:
beginning_of_day – Date | Ruby on Rails API [Official]
end_of_day – Date | Ruby on Rails API [Official]
all_day – DateAndTime::Calculations | Ruby on Rails API [Official]
TimeWithZone のインスタンスを作成する
数値から作成する。
Time.zone.at(1534759980)
# => Mon, 20 Aug 2018 19:13:00 JST +09:00
Code language: Ruby (ruby)
文字列から作成する。
Time.zone.parse("2018-08-20 19:13:00 +0900")
# => Mon, 20 Aug 2018 19:13:00 JST +09:00
Code language: Ruby (ruby)
参考:
ActiveSupport::TimeWithZone | Ruby on Rails API [Official]
to_s(:db)
Time#to_s(:db)
はシステムもしくは環境変数で設定されたタイムゾーンで時刻を返す。TimeWithZone#to_s(:db)
はタイムゾーンとは無関係に UTC で時刻を返す。
参考:
Time#to_s(:db) と TimeWithZone#to_s(:db) は違うので注意 | memo_ruby
Rails の TimeWithZone クラスの to_s(:db) は UTC を返す – Qiita
parse
参考:
Rails parse datetime in model – Stack Overflow
to_datetime / to_date
コード:
to_datetime – rails/conversions.rb at v5.2.3 · rails/rails – GitHub
to_date – rails/conversions.rb at v5.2.3 · rails/rails – GitHub
指定した期間の特定の曜日の日付を取得する
1年間の土日を取得する。
weekend_dates = (Date.today..Date.today.next_year).select do |date| [0, 6].include?(date.wday) end
参考:
Ruby だと日付ループがこんなに簡単に書けるのだ! – Qiita
How do I get all Sundays between two dates in Ruby? – Stack Overflow
ローカライズ
参考:
Rails で日付をいい感じ (スラッシュ区切り) に表示する | SHOYAN BLOG
あなたはいくつ知っている? Rails I18n の便利機能大全!- Qiita
日付/時刻フォーマットを追加する | Rails ガイド [公式]
Rails の日本語での日付表示について – teratail
i18n-js
リポジトリ:
参考:
Rails で i18n-js を使って JavaScript の国際化 | Startup Reality
ago
1ヶ月前の日時を得る。
1.month.ago
Code language: Ruby (ruby)
参考:
ago – ActiveSupport::Duration | Ruby on Rails API [Official]
DateHelper
参考:
ActionView::Helpers::DateHelper | Ruby on Rails API [Official]
distance_of_time_in_words
参考:
distance_of_time_in_words – ActionView::Helpers::DateHelper | Ruby on Rails API [Official]
今日の判定
time_with_zone = Time.zone.now
time_with_zone.today? # => true (今日の日時かどうか判定)
time_with_zone.to_date.past? # => false (昨日以前の日付かどうか判定)
time_with_zone.to_date.future? # => false (明日以降の日付かどうか判定)
Code language: Ruby (ruby)
参考:
Check if DateTime value is today, tomorrow or later – Stack Overflow
DateTime
参考:
DateTime | Ruby on Rails API [Official]
Date
参考:
Rails での日付操作でよく使うものまとめ – Qiita
年月日などの日付要素を取得する – 日付クラス (Date / DateTime) | JavaDrive
Date | Ruby on Rails API [Official]
Time
参考:
Time | Ruby on Rails API [Official]
DateAndTime::Calculations
ドキュメント:
DateAndTime::Calculations | Ruby on Rails API [Official]
DateAndTime::Zones
ドキュメント: