概要
- 何度書いても忘れるのでメモ的な記事
- RailsはRubyのTimeクラスを拡張しているとのこと
ドキュメント
ここみればいいと思います。
今を取る
Time.current
=> Sat, 01 Jun 2024 10:24:15 JST +09:00
Time.now
でも取れるが、Time.current
の場合、Time.zone
またはconfig.time_zone
が設定されていれば、Time.zone.now
を返してくれるのでお得(?)
今より前の時間を取りたい
色々ある
Time.current.ago(1.day)
=> Fri, 31 May 2024 10:25:03 JST +09:00
intからday
やhour
を生やすことができる。複数形でも良い
[23] pry(main)> 3.day
=> 3 days
[24] pry(main)> 2.days
=> 2 days
[25] pry(main)> 1.days
=> 1 day
[26] pry(main)> 1.day
=> 1 day
[27] pry(main)> 1.second
=> 1 second
[28] pry(main)> 1.minute
=> 1 minute
[29] pry(main)> 1.hour
=> 1 hour
[30] pry(main)> 1.month
=> 1 month
[31] pry(main)> 1.year
=> 1 year
ago
を使ったaliasだと思うけど、前月などを取得するメソッドもある
[32] pry(main)> Time.current.prev_day
=> Fri, 31 May 2024 10:27:35 JST +09:00
[33] pry(main)> Time.current.prev_month
=> Wed, 01 May 2024 10:27:37 JST +09:00
[34] pry(main)> Time.current.prev_year
=> Thu, 01 Jun 2023 10:27:38 JST +09:00
timestamp to Time
[38] pry(main)> Time.at(1717167600)
=> 2024-06-01 00:00:00 +0900
指定した年や月が何日あるか
[52] pry(main)> (2015..2022).to_h { |year| [year, Time.days_in_year(year)] }
=> {2015=>365, 2016=>366, 2017=>365, 2018=>365, 2019=>365, 2020=>366, 2021=>365, 2022=>365}
[1] pry(main)> Time.days_in_month(2, 2022)
=> 28
[2] pry(main)> Time.days_in_month(2, 2021)
=> 28
[3] pry(main)> Time.days_in_month(2, 2020)
=> 29
[5] pry(main)> Time.days_in_month(2, 2019)
=> 28
2020年は閏年
一旦ここまで