1
0

RailsのTimeクラスを覚えたい

Posted at

概要

  • 何度書いても忘れるのでメモ的な記事
  • 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からdayhourを生やすことができる。複数形でも良い

[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年は閏年

一旦ここまで

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0