使い方

参考:

Ruby/Rails の時間に関するメソッドを使用してみた | RE:ENGINES

まとめ

参考:

Ruby と Rails における Time / Date / DateTime / TimeWithZone の違い – Qiita

ついに RoR の日付の闇を払った – 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 の使い方

参考:

Time::DATE_FORMATS – Qiita

日付/時間フォーマットのデフォルトを設定 – Qiita

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

参考:

日付の表示方法メモ – Qiita

Rails の strftime チートシート – Qiita

strftime のよく使うテンプレート | TechRacho

Ruby の strftime で月日や時刻の0埋めを行わない書式指定 | ltcmdr927atenablog

strftime – ActiveSupport::TimeWithZone | Ruby on Rails API [Official]

Time#strftime | Ruby リファレンスマニュアル [公式]

曜日を日本語表示する

参考:

日本語対応の短縮曜日の表示 – Qiita

日本語曜日入り日付フォーマットを1行で書く – Qiita

日付から曜日を日本語で取得する – Qiita

午前・午後

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"
    # ...
endCode language: Ruby (ruby)

タイムゾーンを確認する。

$ rails r "puts Time.zone"
(GMT+09:00) Tokyo

現在時刻を得る。

Time.zone.nowCode language: Ruby (ruby)

もしくは、

Time.currentCode language: Ruby (ruby)

今日の日付を取得する。

Time.zone.todayCode 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:00Code language: Ruby (ruby)

文字列から作成する。

Time.zone.parse("2018-08-20 19:13:00 +0900")
# => Mon, 20 Aug 2018 19:13:00 JST +09:00Code 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

アプリの国際化の実装と考察 | ボクココ

国際化機能使い方 – Qiita

日付/時刻フォーマットを追加する | Rails ガイド [公式]

Rails の日本語での日付表示について – teratail

i18n-js

リポジトリ:

fnando/i18n-js: It’s a small library to provide the I18n translations on the Javascript. It comes with Rails support. – GitHub

参考:

Rails で i18n-js を使って JavaScript の国際化 | Startup Reality

ago

1ヶ月前の日時を得る。

1.month.agoCode language: Ruby (ruby)

参考:

1.month.ago とは何か – Qiita

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 クラスチートシート 時系列順 – Qiita

年月日などの日付要素を取得する – 日付クラス (Date / DateTime) | JavaDrive

Date | Ruby on Rails API [Official]

Time

参考:

Time 拡張 – Qiita

Time | Ruby on Rails API [Official]

DateAndTime::Calculations

ドキュメント:

DateAndTime::Calculations | Ruby on Rails API [Official]

DateAndTime::Zones

ドキュメント:

DateAndTime::Zones | Ruby on Rails API [Official]

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA