Time.now             # 現在の日時(ローカルタイムゾーン)
Time.now.utc         # 現在の日時(UTC)
Date.today           # 現在の日付
DateTime.now         # 現在の日時(DateTimeオブジェクト)
Time.zone.now                # 設定されたタイムゾーンの現在時刻
Time.current                 # Railsに設定されたタイムゾーンの現在時刻(基本的にコレを使おう!!)
Date.new(2024, 1, 20)               # 2024年1月20日
Time.new(2024, 1, 20, 12, 0, 0)     # 2024年1月20日12時0分0秒
DateTime.new(2024, 1, 20, 12, 0, 0) # 2024年1月20日12時0分0秒(DateTimeオブジェクト)
Time.zone.local(2024, 1, 20) # 指定されたタイムゾーンでの特定の日時
Time.now.beginning_of_month  # 今月の初めの日時
Time.now.end_of_day          # 今日の終わり(23:59:59)の日時
Time.now.strftime("%Y-%m-%d %H:%M:%S")   # "YYYY-MM-DD HH:MM:SS" フォーマット
Date.today.strftime("%d/%m/%Y")          # "DD/MM/YYYY" フォーマット

time = Time.now
time.strftime("%Y-%m-%d %H:%M:%S") # YYYY-MM-DD HH:MM:SS 形式
time.strftime("%d/%m/%Y")          # DD/MM/YYYY 形式
time.strftime("%I:%M%p")           # 時:分AM/PM 形式

# 例: "2024-01-20 12:30:45", "20/01/2024", "12:30PM"
Time.current.to_s(:short)           # "20 Jan 12:30"
Time.current.to_s(:long)            # "January 20, 2024 12:30"

# カスタムフォーマット(例: :db, :number)
Time.current.to_formatted_s(:db)    # "2024-01-20 12:30:45"
Time.current.to_formatted_s(:number) # "20240120123045"

# ISO 8601 フォーマット
Time.current.iso8601                # "2024-01-20T12:30:45+09:00"
# Durationに生えてる
2.hours.from_now       # 現在から2時間後
3.days.ago             # 3日前

# Date / Timeに生えてる
5.weeks.since(Date.today) # 今日から5週間後の日付
1.year.until(Time.now) # 現在から1年前
1.second        # 1秒
2.minutes       # 2分
3.hours         # 3時間
4.days          # 4日
5.weeks         # 5週間
6.months        # 6ヶ月
7.years         # 7年

1.year.ago + 1.day # 1年前の1日あと
1.week + 3.days + 2.hours   # 1週間3日2時間の持続時間を表す
10.minutes.to_i            # 分を秒に変換

10.minutes == 600.seconds  # true
1.day > 1.hour             # true

10.minutes.in_seconds    # 秒数(600秒)
2.hours.in_minutes       # 分数(120分)
1.day.in_hours           # 時間数(24時間)
(Date.today.beginning_of_week..Date.today.end_of_week).cover?(Date.yesterday) # 今週の範囲に昨日が含まれるかどうか

where(created_at: Time.zone.today.all_month)
# all_day , all_week , all_month , all_year
# 2017年9月30日(土)の場合

Time.zone.today             # => Sat, 30 Sep 2017
Time.zone.today.on_weekday? # => false
Time.zone.today.on_weekend? # => true
# 現在時刻を特定の日時に設定
travel_to Time.new(2024, 1, 20, 10, 0, 0) do
  # ここでは時刻が2024年1月20日10時0分0秒
end

# 現在時刻を凍結
freeze_time do
  # ここでは時刻がブロックが開始した瞬間に凍結される
end

travel 2.hours do
  # 現在時刻から2時間進んだ時刻でコードを実行
end

travel_back