【Ruby】日付・時刻の使い方まとめ
~簡単な自己紹介~
- 嫁と猫3匹と暮らすフルリモートの三十路SE
- 投資・節約・副業で資産形成中
- 現在の金融資産は約1,750万円、めざせアッパーマス層(資産3,000万円)
システム開発をしていると頻繁に日付計算を行います。
Rubyの日付・時刻の取得やフォーマット、計算の使い方をまとめました。
(投稿時点では時刻系はまだですが、そのうち追加するので・・・)
内容は随時追加していきます。
目次
日付・時刻を取得/生成する
現在日付を取得する
puts Date.today # 例:2023-08-15
文字列から日付を生成する
puts Date.parse("2023-08-15") # 2023-08-15
数字を組み合わせて日付を生成する
puts Date.new(2023, 8, 15) # 2023-08-15
○○を取得する/フォーマット
年(year)
puts Date.parse("2023-08-15").year # 2023
月(month)
puts Date.parse("2023-08-15").month # 8
日(day)
puts Date.parse("2023-08-15").day # 15
曜日(day of week)
曜日は番号(日:0・・・土:6)で取得することになります。
期待している日本語(日月火水木金土)で取得することはできないので、配列と組み合わせて曜日を取得します。
week = ["日", "月", "火", "水", "木", "金", "土"]
puts week[Date.parse("2023-08-15").wday] # 火
日付の加算・減算
1日前(昨日)・1日後(翌日)
puts Date.parse("2023-08-15").yesterday # 2023-08-14
puts Date.parse("2023-08-15").tomorrow # 2023-08-16
n日前・n日後
puts Date.parse("2023-08-15").days_ago(2) # 2023-08-13
または
puts Date.parse("2023-08-15") - 2 # 2023-08-13
puts Date.parse("2023-08-15") + 2 # 2023-08-17
1月前(前月)・1月後(翌月)
puts Date.parse("2023-08-15").last_month # 2023-07-15
puts Date.parse("2023-08-15").next_month # 2023-09-15
n月前・n月後
puts Date.parse("2023-08-15").months_ago(2) # 2023-06-15
または
puts Date.parse("2023-08-15") << 2 # 2023-06-15
puts Date.parse("2023-08-15") >> 2 # 2023-10-15
月初(その月の最初の日)・月末(その月の最終日)
puts Date.parse("2023-08-15").beginning_of_month # 2023-08-01
puts Date.parse("2023-08-15").end_of_month # 2023-08-31
以上になります。
お疲れさまでした。