mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Delete DateAndTime
method definition in rails that is compatible with ruby definition
Tests are also only on the `Time` class Update doc forgetting to erase when moved Update guide `Date` class to `Time` class and defined file Update guide correction omission
This commit is contained in:
parent
bf0570e8d7
commit
bfecb7d3b6
6 changed files with 112 additions and 128 deletions
|
@ -20,21 +20,11 @@ module DateAndTime
|
|||
advance(days: -1)
|
||||
end
|
||||
|
||||
# Returns a new date/time the specified number of days ago.
|
||||
def prev_day(days = 1)
|
||||
advance(days: -days)
|
||||
end
|
||||
|
||||
# Returns a new date/time representing tomorrow.
|
||||
def tomorrow
|
||||
advance(days: 1)
|
||||
end
|
||||
|
||||
# Returns a new date/time the specified number of days in the future.
|
||||
def next_day(days = 1)
|
||||
advance(days: days)
|
||||
end
|
||||
|
||||
# Returns true if the date/time is today.
|
||||
def today?
|
||||
to_date == ::Date.current
|
||||
|
@ -198,21 +188,11 @@ module DateAndTime
|
|||
end
|
||||
end
|
||||
|
||||
# Returns a new date/time the specified number of months in the future.
|
||||
def next_month(months = 1)
|
||||
advance(months: months)
|
||||
end
|
||||
|
||||
# Short-hand for months_since(3)
|
||||
def next_quarter
|
||||
months_since(3)
|
||||
end
|
||||
|
||||
# Returns a new date/time the specified number of years in the future.
|
||||
def next_year(years = 1)
|
||||
advance(years: years)
|
||||
end
|
||||
|
||||
# Returns a new date/time representing the given day in the previous week.
|
||||
# Week is assumed to start on +start_day+, default is
|
||||
# +Date.beginning_of_week+ or +config.beginning_of_week+ when set.
|
||||
|
@ -233,11 +213,6 @@ module DateAndTime
|
|||
end
|
||||
alias_method :last_weekday, :prev_weekday
|
||||
|
||||
# Returns a new date/time the specified number of months ago.
|
||||
def prev_month(months = 1)
|
||||
advance(months: -months)
|
||||
end
|
||||
|
||||
# Short-hand for months_ago(1).
|
||||
def last_month
|
||||
months_ago(1)
|
||||
|
@ -249,11 +224,6 @@ module DateAndTime
|
|||
end
|
||||
alias_method :last_quarter, :prev_quarter
|
||||
|
||||
# Returns a new date/time the specified number of years ago.
|
||||
def prev_year(years = 1)
|
||||
advance(years: -years)
|
||||
end
|
||||
|
||||
# Short-hand for years_ago(1).
|
||||
def last_year
|
||||
years_ago(1)
|
||||
|
|
|
@ -311,4 +311,34 @@ class Time
|
|||
end
|
||||
alias_method :eql_without_coercion, :eql?
|
||||
alias_method :eql?, :eql_with_coercion
|
||||
|
||||
# Returns a new time the specified number of days ago.
|
||||
def prev_day(days = 1)
|
||||
advance(days: -days)
|
||||
end
|
||||
|
||||
# Returns a new time the specified number of days in the future.
|
||||
def next_day(days = 1)
|
||||
advance(days: days)
|
||||
end
|
||||
|
||||
# Returns a new time the specified number of months ago.
|
||||
def prev_month(months = 1)
|
||||
advance(months: -months)
|
||||
end
|
||||
|
||||
# Returns a new time the specified number of months in the future.
|
||||
def next_month(months = 1)
|
||||
advance(months: months)
|
||||
end
|
||||
|
||||
# Returns a new time the specified number of years ago.
|
||||
def prev_year(years = 1)
|
||||
advance(years: -years)
|
||||
end
|
||||
|
||||
# Returns a new time the specified number of years in the future.
|
||||
def next_year(years = 1)
|
||||
advance(years: years)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,31 +8,11 @@ module DateAndTimeBehavior
|
|||
assert_equal date_time_init(2005, 2, 28, 10, 10, 10), date_time_init(2005, 3, 2, 10, 10, 10).yesterday.yesterday
|
||||
end
|
||||
|
||||
def test_prev_day
|
||||
assert_equal date_time_init(2005, 2, 24, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(-2)
|
||||
assert_equal date_time_init(2005, 2, 23, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(-1)
|
||||
assert_equal date_time_init(2005, 2, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(0)
|
||||
assert_equal date_time_init(2005, 2, 21, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(1)
|
||||
assert_equal date_time_init(2005, 2, 20, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(2)
|
||||
assert_equal date_time_init(2005, 2, 21, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day
|
||||
assert_equal date_time_init(2005, 2, 28, 10, 10, 10), date_time_init(2005, 3, 2, 10, 10, 10).prev_day.prev_day
|
||||
end
|
||||
|
||||
def test_tomorrow
|
||||
assert_equal date_time_init(2005, 2, 23, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).tomorrow
|
||||
assert_equal date_time_init(2005, 3, 2, 10, 10, 10), date_time_init(2005, 2, 28, 10, 10, 10).tomorrow.tomorrow
|
||||
end
|
||||
|
||||
def test_next_day
|
||||
assert_equal date_time_init(2005, 2, 20, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(-2)
|
||||
assert_equal date_time_init(2005, 2, 21, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(-1)
|
||||
assert_equal date_time_init(2005, 2, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(0)
|
||||
assert_equal date_time_init(2005, 2, 23, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(1)
|
||||
assert_equal date_time_init(2005, 2, 24, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(2)
|
||||
assert_equal date_time_init(2005, 2, 23, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day
|
||||
assert_equal date_time_init(2005, 3, 2, 10, 10, 10), date_time_init(2005, 2, 28, 10, 10, 10).next_day.next_day
|
||||
end
|
||||
|
||||
def test_days_ago
|
||||
assert_equal date_time_init(2005, 6, 4, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).days_ago(1)
|
||||
assert_equal date_time_init(2005, 5, 31, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).days_ago(5)
|
||||
|
@ -161,16 +141,6 @@ module DateAndTimeBehavior
|
|||
assert_equal date_time_init(2015, 1, 5, 15, 15, 10), date_time_init(2015, 1, 3, 15, 15, 10).next_weekday
|
||||
end
|
||||
|
||||
def test_next_month
|
||||
assert_equal date_time_init(2004, 12, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(-2)
|
||||
assert_equal date_time_init(2005, 1, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(-1)
|
||||
assert_equal date_time_init(2005, 2, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(0)
|
||||
assert_equal date_time_init(2005, 3, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(1)
|
||||
assert_equal date_time_init(2005, 4, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(2)
|
||||
assert_equal date_time_init(2005, 3, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month
|
||||
assert_equal date_time_init(2005, 4, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month.next_month
|
||||
end
|
||||
|
||||
def test_next_month_on_31st
|
||||
assert_equal date_time_init(2005, 9, 30, 15, 15, 10), date_time_init(2005, 8, 31, 15, 15, 10).next_month
|
||||
end
|
||||
|
@ -179,16 +149,6 @@ module DateAndTimeBehavior
|
|||
assert_equal date_time_init(2005, 11, 30, 15, 15, 10), date_time_init(2005, 8, 31, 15, 15, 10).next_quarter
|
||||
end
|
||||
|
||||
def test_next_year
|
||||
assert_equal date_time_init(2003, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(-2)
|
||||
assert_equal date_time_init(2004, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(-1)
|
||||
assert_equal date_time_init(2005, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(0)
|
||||
assert_equal date_time_init(2006, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(1)
|
||||
assert_equal date_time_init(2007, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(2)
|
||||
assert_equal date_time_init(2006, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year
|
||||
assert_equal date_time_init(2007, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year.next_year
|
||||
end
|
||||
|
||||
def test_prev_week
|
||||
assert_equal date_time_init(2005, 2, 21, 0, 0, 0), date_time_init(2005, 3, 1, 15, 15, 10).prev_week
|
||||
assert_equal date_time_init(2005, 2, 22, 0, 0, 0), date_time_init(2005, 3, 1, 15, 15, 10).prev_week(:tuesday)
|
||||
|
@ -229,16 +189,6 @@ module DateAndTimeBehavior
|
|||
assert_equal date_time_init(2015, 1, 2, 15, 15, 10), date_time_init(2015, 1, 4, 15, 15, 10).prev_weekday
|
||||
end
|
||||
|
||||
def test_prev_month
|
||||
assert_equal date_time_init(2005, 4, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(-2)
|
||||
assert_equal date_time_init(2005, 3, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(-1)
|
||||
assert_equal date_time_init(2005, 2, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(0)
|
||||
assert_equal date_time_init(2005, 1, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(1)
|
||||
assert_equal date_time_init(2004, 12, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(2)
|
||||
assert_equal date_time_init(2005, 1, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month
|
||||
assert_equal date_time_init(2004, 12, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month.prev_month
|
||||
end
|
||||
|
||||
def test_prev_month_on_31st
|
||||
assert_equal date_time_init(2004, 2, 29, 10, 10, 10), date_time_init(2004, 3, 31, 10, 10, 10).prev_month
|
||||
end
|
||||
|
@ -247,16 +197,6 @@ module DateAndTimeBehavior
|
|||
assert_equal date_time_init(2004, 2, 29, 10, 10, 10), date_time_init(2004, 5, 31, 10, 10, 10).prev_quarter
|
||||
end
|
||||
|
||||
def test_prev_year
|
||||
assert_equal date_time_init(2007, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(-2)
|
||||
assert_equal date_time_init(2006, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(-1)
|
||||
assert_equal date_time_init(2005, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(0)
|
||||
assert_equal date_time_init(2004, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(1)
|
||||
assert_equal date_time_init(2003, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(2)
|
||||
assert_equal date_time_init(2004, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year
|
||||
assert_equal date_time_init(2003, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year.prev_year
|
||||
end
|
||||
|
||||
def test_last_month_on_31st
|
||||
assert_equal date_time_init(2004, 2, 29, 0, 0, 0), date_time_init(2004, 3, 31, 0, 0, 0).last_month
|
||||
end
|
||||
|
|
|
@ -112,14 +112,6 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
|
|||
assert_equal Date.new(2005, 4, 30), Date.new(2005, 4, 20).end_of_month
|
||||
end
|
||||
|
||||
def test_prev_year_in_leap_years
|
||||
assert_equal Date.new(1999, 2, 28), Date.new(2000, 2, 29).prev_year
|
||||
end
|
||||
|
||||
def test_prev_year_in_calendar_reform
|
||||
assert_equal Date.new(1582, 10, 4), Date.new(1583, 10, 14).prev_year
|
||||
end
|
||||
|
||||
def test_last_year_in_leap_years
|
||||
assert_equal Date.new(1999, 2, 28), Date.new(2000, 2, 29).last_year
|
||||
end
|
||||
|
@ -128,14 +120,6 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
|
|||
assert_equal Date.new(1582, 10, 4), Date.new(1583, 10, 14).last_year
|
||||
end
|
||||
|
||||
def test_next_year_in_leap_years
|
||||
assert_equal Date.new(2001, 2, 28), Date.new(2000, 2, 29).next_year
|
||||
end
|
||||
|
||||
def test_next_year_in_calendar_reform
|
||||
assert_equal Date.new(1582, 10, 4), Date.new(1581, 10, 10).next_year
|
||||
end
|
||||
|
||||
def test_advance
|
||||
assert_equal Date.new(2006, 2, 28), Date.new(2005, 2, 28).advance(years: 1)
|
||||
assert_equal Date.new(2005, 6, 28), Date.new(2005, 2, 28).advance(months: 4)
|
||||
|
|
|
@ -949,6 +949,66 @@ class TimeExtCalculationsTest < ActiveSupport::TestCase
|
|||
|
||||
assert_equal "invalid date", exception.message
|
||||
end
|
||||
|
||||
def test_prev_day
|
||||
assert_equal date_time_init(2005, 2, 24, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(-2)
|
||||
assert_equal date_time_init(2005, 2, 23, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(-1)
|
||||
assert_equal date_time_init(2005, 2, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(0)
|
||||
assert_equal date_time_init(2005, 2, 21, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(1)
|
||||
assert_equal date_time_init(2005, 2, 20, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day(2)
|
||||
assert_equal date_time_init(2005, 2, 21, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_day
|
||||
assert_equal date_time_init(2005, 2, 28, 10, 10, 10), date_time_init(2005, 3, 2, 10, 10, 10).prev_day.prev_day
|
||||
end
|
||||
|
||||
def test_next_day
|
||||
assert_equal date_time_init(2005, 2, 20, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(-2)
|
||||
assert_equal date_time_init(2005, 2, 21, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(-1)
|
||||
assert_equal date_time_init(2005, 2, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(0)
|
||||
assert_equal date_time_init(2005, 2, 23, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(1)
|
||||
assert_equal date_time_init(2005, 2, 24, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day(2)
|
||||
assert_equal date_time_init(2005, 2, 23, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_day
|
||||
assert_equal date_time_init(2005, 3, 2, 10, 10, 10), date_time_init(2005, 2, 28, 10, 10, 10).next_day.next_day
|
||||
end
|
||||
|
||||
def test_prev_month
|
||||
assert_equal date_time_init(2005, 4, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(-2)
|
||||
assert_equal date_time_init(2005, 3, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(-1)
|
||||
assert_equal date_time_init(2005, 2, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(0)
|
||||
assert_equal date_time_init(2005, 1, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(1)
|
||||
assert_equal date_time_init(2004, 12, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month(2)
|
||||
assert_equal date_time_init(2005, 1, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month
|
||||
assert_equal date_time_init(2004, 12, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).prev_month.prev_month
|
||||
end
|
||||
|
||||
def test_next_month
|
||||
assert_equal date_time_init(2004, 12, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(-2)
|
||||
assert_equal date_time_init(2005, 1, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(-1)
|
||||
assert_equal date_time_init(2005, 2, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(0)
|
||||
assert_equal date_time_init(2005, 3, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(1)
|
||||
assert_equal date_time_init(2005, 4, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month(2)
|
||||
assert_equal date_time_init(2005, 3, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month
|
||||
assert_equal date_time_init(2005, 4, 22, 10, 10, 10), date_time_init(2005, 2, 22, 10, 10, 10).next_month.next_month
|
||||
end
|
||||
|
||||
def test_prev_year
|
||||
assert_equal date_time_init(2007, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(-2)
|
||||
assert_equal date_time_init(2006, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(-1)
|
||||
assert_equal date_time_init(2005, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(0)
|
||||
assert_equal date_time_init(2004, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(1)
|
||||
assert_equal date_time_init(2003, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year(2)
|
||||
assert_equal date_time_init(2004, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year
|
||||
assert_equal date_time_init(2003, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).prev_year.prev_year
|
||||
end
|
||||
|
||||
def test_next_year
|
||||
assert_equal date_time_init(2003, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(-2)
|
||||
assert_equal date_time_init(2004, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(-1)
|
||||
assert_equal date_time_init(2005, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(0)
|
||||
assert_equal date_time_init(2006, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(1)
|
||||
assert_equal date_time_init(2007, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year(2)
|
||||
assert_equal date_time_init(2006, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year
|
||||
assert_equal date_time_init(2007, 6, 5, 10, 10, 10), date_time_init(2005, 6, 5, 10, 10, 10).next_year.next_year
|
||||
end
|
||||
end
|
||||
|
||||
class TimeExtMarshalingTest < ActiveSupport::TestCase
|
||||
|
|
|
@ -3416,56 +3416,56 @@ NOTE: Defined in `active_support/core_ext/date_and_time/calculations.rb`.
|
|||
|
||||
#### `prev_day`, `next_day`
|
||||
|
||||
`prev_day` and `next_day` return the date in the last or next day:
|
||||
`prev_day` and `next_day` return the time in the last or next day:
|
||||
|
||||
```ruby
|
||||
d = Date.new(2010, 5, 8) # => Sat, 08 May 2010
|
||||
d.prev_day # => Fri, 07 May 2010
|
||||
d.next_day # => Sun, 09 May 2010
|
||||
t = Time.new(2010, 5, 8) # => 2010-05-08 00:00:00 +0900
|
||||
t.prev_day # => 2010-05-07 00:00:00 +0900
|
||||
t.next_day # => 2010-05-09 00:00:00 +0900
|
||||
```
|
||||
|
||||
NOTE: Defined in `active_support/core_ext/date_and_time/calculations.rb`.
|
||||
NOTE: Defined in `active_support/core_ext/time/calculations.rb`.
|
||||
|
||||
#### `prev_month`, `next_month`
|
||||
|
||||
`prev_month` and `next_month` return the date with the same day in the last or next month:
|
||||
`prev_month` and `next_month` return the time with the same day in the last or next month:
|
||||
|
||||
```ruby
|
||||
d = Date.new(2010, 5, 8) # => Sat, 08 May 2010
|
||||
d.prev_month # => Thu, 08 Apr 2010
|
||||
d.next_month # => Tue, 08 Jun 2010
|
||||
t = Time.new(2010, 5, 8) # => 2010-05-08 00:00:00 +0900
|
||||
t.prev_month # => 2010-04-08 00:00:00 +0900
|
||||
t.next_month # => 2010-06-08 00:00:00 +0900
|
||||
```
|
||||
|
||||
If such a day does not exist, the last day of the corresponding month is returned:
|
||||
|
||||
```ruby
|
||||
Date.new(2000, 5, 31).prev_month # => Sun, 30 Apr 2000
|
||||
Date.new(2000, 3, 31).prev_month # => Tue, 29 Feb 2000
|
||||
Date.new(2000, 5, 31).next_month # => Fri, 30 Jun 2000
|
||||
Date.new(2000, 1, 31).next_month # => Tue, 29 Feb 2000
|
||||
Time.new(2000, 5, 31).prev_month # => 2000-04-30 00:00:00 +0900
|
||||
Time.new(2000, 3, 31).prev_month # => 2000-02-29 00:00:00 +0900
|
||||
Time.new(2000, 5, 31).next_month # => 2000-06-30 00:00:00 +0900
|
||||
Time.new(2000, 1, 31).next_month # => 2000-02-29 00:00:00 +0900
|
||||
```
|
||||
|
||||
NOTE: Defined in `active_support/core_ext/date_and_time/calculations.rb`.
|
||||
NOTE: Defined in `active_support/core_ext/time/calculations.rb`.
|
||||
|
||||
#### `prev_year`, `next_year`
|
||||
|
||||
`prev_year` and `next_year` return a date with the same day/month in the last or next year:
|
||||
`prev_year` and `next_year` return a time with the same day/month in the last or next year:
|
||||
|
||||
```ruby
|
||||
d = Date.new(2010, 5, 8) # => Sat, 08 May 2010
|
||||
d.prev_year # => Fri, 08 May 2009
|
||||
d.next_year # => Sun, 08 May 2011
|
||||
t = Time.new(2010, 5, 8) # => 2010-05-08 00:00:00 +0900
|
||||
t.prev_year # => 2009-05-08 00:00:00 +0900
|
||||
t.next_year # => 2011-05-08 00:00:00 +0900
|
||||
```
|
||||
|
||||
If date is the 29th of February of a leap year, you obtain the 28th:
|
||||
|
||||
```ruby
|
||||
d = Date.new(2000, 2, 29) # => Tue, 29 Feb 2000
|
||||
d.prev_year # => Sun, 28 Feb 1999
|
||||
d.next_year # => Wed, 28 Feb 2001
|
||||
t = Time.new(2000, 2, 29) # => 2000-02-29 00:00:00 +0900
|
||||
t.prev_year # => 1999-02-28 00:00:00 +0900
|
||||
t.next_year # => 2001-02-28 00:00:00 +0900
|
||||
```
|
||||
|
||||
NOTE: Defined in `active_support/core_ext/date_and_time/calculations.rb`.
|
||||
NOTE: Defined in `active_support/core_ext/time/calculations.rb`.
|
||||
|
||||
#### `prev_quarter`, `next_quarter`
|
||||
|
||||
|
|
Loading…
Reference in a new issue