今の日時を取得
#Railsなら $ rails c #Rubyなら $ irb require 'active_support/all' #Railsの場合は不要 irb(main):001:0> now = Time.current => Wed, 26 Aug 2020 12:19:59 JST +09:00 #Date.currentもある。日付だけほしいならこれでも irb(main):004:0> Date.current => Thu, 10 Sep 2020
月末、月初を取得
end_of_month
で月末を取得できる。
irb(main):001:0> now = Time.current => Wed, 26 Aug 2020 13:28:12 JST +09:00 irb(main):002:0> now.end_of_month => Mon, 31 Aug 2020 23:59:59 JST +09:00
beginning_of_month
で月初を取得できる。
irb(main):005:0> now.beginning_of_month => Sat, 01 Aug 2020 00:00:00 JST +09:00
date表記で取得する。
irb(main):008:0> now.to_date => Sat, 29 Aug 2020
view側でループで日付を表示したい場合はday
で日付をとる。(to_date
)でもいける。day
だと本当に「1」や「2」になる。
@beginning_of_month = Time.current.beginning_of_month.day @end_of_month = Time.current.end_of_month.day #view - (@beginning_of_month..@end_of_month).each do |day| li = day
前日、翌日
irb(main):011:0> Date.current.prev_day => Fri, 18 Sep 2020 irb(main):012:0> Date.current.next_day => Sun, 20 Sep 2020
class Date (Ruby 2.7.0 リファレンスマニュアル)
30日前、30日後
#30日前 irb(main):005:0> now.ago(30.days) => Mon, 27 Jul 2020 12:19:59 JST +09:00 #30日後 irb(main):004:0> now.since(30.days) => Fri, 25 Sep 2020 12:19:59 JST +09:00
1ヶ月前、1ヶ月後
#1ヶ月前 irb(main):006:0> now.ago(1.month) => Sun, 26 Jul 2020 12:19:59 JST +09:00 #1ヶ月後 irb(main):007:0> now.since(1.month) => Sat, 26 Sep 2020 12:19:59 JST +09:00
前後一ヶ月を取るならこちらのほうがシンプルに書ける。
irb(main):009:0> now.prev_month => Wed, 29 Jul 2020 12:08:02 JST +09:00 irb(main):010:0> now.next_month => Tue, 29 Sep 2020 12:08:02 JST +09:00
1年前、1年後
#1年前 irb(main):010:0> now.ago(1.year) => Mon, 26 Aug 2019 12:19:59 JST +09:00 #1年後 irb(main):009:0> now.since(1.year) => Thu, 26 Aug 2021 12:19:59 JST +09:00
こちらも前後一ヶ月と同様に、前後1年を取るならこのほうがシンプルに書ける。
irb(main):011:0> now.next_year => Sun, 29 Aug 2021 12:08:02 JST +09:00 irb(main):012:0> now.last_year => Thu, 29 Aug 2019 12:08:02 JST +09:00