今日、昨日、○日前、○日後とか
# 今日 [1] pry(main)> Date.today => Sat, 22 Aug 2020 [6] pry(main)> Date.current => Sat, 22 Aug 2020 # 昨日 [7] pry(main)> Date.current.yesterday => Fri, 21 Aug 2020 # 昨日(1日前) [8] pry(main)> Date.current.ago(1.day) => Fri, 21 Aug 2020 00:00:00 JST +09:00 # 3日前 [9] pry(main)> Date.current.ago(3.day) => Wed, 19 Aug 2020 00:00:00 JST +09:00 # 10日前 [8] pry(main)> Date.today.prev_day(10) => Mon, 17 Aug 2020 # 10日語 [7] pry(main)> Date.today.next_day(10) => Sun, 06 Sep 2020 # 2ヶ月後 [9] pry(main)> Date.today.next_month(2) => Tue, 27 Oct 2020
日・週・月などを丸々取得
# 今日24時間丸々 [16] pry(main)> Date.current.all_day => Sat, 22 Aug 2020 00:00:00 JST +09:00..Sat, 22 Aug 2020 23:59:59 JST +09:00 # 今週丸々 [17] pry(main)> Date.current.all_week => Mon, 17 Aug 2020..Sun, 23 Aug 2020 [18] pry(main)> Date.current.all_month => Sat, 01 Aug 2020..Mon, 31 Aug 2020 [19] pry(main)> Date.current.all_year => Wed, 01 Jan 2020..Thu, 31 Dec 2020
日・週・月などの始まり・終わり
# 今日の0時 [21] pry(main)> Date.current.beginning_of_day => Sat, 22 Aug 2020 00:00:00 JST +09:00 # 今週最初の日(月曜日) [13] pry(main)> Date.current.beginning_of_week => Mon, 17 Aug 2020 # 今週最後の日(日曜日) [14] pry(main)> Date.current.end_of_week => Sun, 23 Aug 2020 # 今月最後の日 [15] pry(main)> Date.current.end_of_month => Mon, 31 Aug 2020 # 今年最後の日 [20] pry(main)> Date.current.end_of_year => Thu, 31 Dec 2020
指定したオブジェクトが、どんなメソッド等を使用できるのか確認する
ある型を持つオブジェクト(今回で言えばDate型)が、どのようなメソッドを使用できるのか確認する癖は付けておいた方がいいと思う。
[16] pry(main)> today = Date.today => Thu, 27 Aug 2020 [18] pry(main)> today.class => Date [17] pry(main)> ls today ActiveSupport::ToJsonWithActiveSupportEncoder#methods: to_json ActiveSupport::Dependencies::ZeitwerkIntegration::RequireDependency#methods: require_dependency Comparable#methods: < <= == > >= between? clamp DateAndTime::Zones#methods: in_time_zone DateAndTime::Calculations#methods: after? all_year at_end_of_month beginning_of_month days_since end_of_year last_weekday next_occurring on_weekend? prev_weekday weeks_since all_day at_beginning_of_month at_end_of_quarter beginning_of_quarter days_to_week_start future? last_year next_quarter past? sunday years_ago all_month at_beginning_of_quarter at_end_of_week beginning_of_week end_of_month last_month monday next_week prev_occurring today? years_since all_quarter at_beginning_of_week at_end_of_year beginning_of_year end_of_quarter last_quarter months_ago next_weekday prev_quarter tomorrow yesterday all_week at_beginning_of_year before? days_ago end_of_week last_week months_since on_weekday? prev_week weeks_ago Date#methods: + ajd at_noon cwyear gregorian jd midday new_start prev_month step to_s - amjd beginning_of_day day gregorian? jisx0301 middle_of_day next prev_year strftime to_time << as_json blank? day_fraction hash julian midnight next_day readable_inspect succ tuesday? <=> asctime change default_inspect httpdate julian? minus_with_duration next_month rfc2822 sunday? upto === at_beginning_of_day compare_with_coercion downto in ld minus_without_duration next_year rfc3339 thursday? wday >> at_end_of_day compare_without_coercion end_of_day infinite? leap? mjd noon rfc822 to_date wednesday? acts_like_date? at_midday ctime england inspect marshal_dump mon plus_with_duration saturday? to_datetime xmlschema advance at_middle_of_day cwday eql? iso8601 marshal_load monday? plus_without_duration since to_default_s yday ago at_midnight cweek friday? italy mday month prev_day start to_formatted_s year