mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Setting usec (and nsec for Ruby 1.9) on Time#end_of_* methods [#1255 status:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
1bd4d1c674
commit
3545d6b0b2
3 changed files with 32 additions and 32 deletions
|
@ -158,7 +158,7 @@ class Time
|
||||||
alias :monday :beginning_of_week
|
alias :monday :beginning_of_week
|
||||||
alias :at_beginning_of_week :beginning_of_week
|
alias :at_beginning_of_week :beginning_of_week
|
||||||
|
|
||||||
# Returns a new Time representing the end of this week (Sunday, 23:59:59)
|
# Returns a new Time representing the end of this week, (end of Sunday)
|
||||||
def end_of_week
|
def end_of_week
|
||||||
days_to_sunday = wday!=0 ? 7-wday : 0
|
days_to_sunday = wday!=0 ? 7-wday : 0
|
||||||
(self + days_to_sunday.days).end_of_day
|
(self + days_to_sunday.days).end_of_day
|
||||||
|
@ -178,9 +178,9 @@ class Time
|
||||||
alias :at_midnight :beginning_of_day
|
alias :at_midnight :beginning_of_day
|
||||||
alias :at_beginning_of_day :beginning_of_day
|
alias :at_beginning_of_day :beginning_of_day
|
||||||
|
|
||||||
# Returns a new Time representing the end of the day (23:59:59)
|
# Returns a new Time representing the end of the day, 23:59:59.999999 (.999999999 in ruby1.9)
|
||||||
def end_of_day
|
def end_of_day
|
||||||
change(:hour => 23, :min => 59, :sec => 59)
|
change(:hour => 23, :min => 59, :sec => 59, :usec => 999999.999)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns a new Time representing the start of the month (1st of the month, 0:00)
|
# Returns a new Time representing the start of the month (1st of the month, 0:00)
|
||||||
|
@ -190,11 +190,11 @@ class Time
|
||||||
end
|
end
|
||||||
alias :at_beginning_of_month :beginning_of_month
|
alias :at_beginning_of_month :beginning_of_month
|
||||||
|
|
||||||
# Returns a new Time representing the end of the month (last day of the month, 0:00)
|
# Returns a new Time representing the end of the month (end of the last day of the month)
|
||||||
def end_of_month
|
def end_of_month
|
||||||
#self - ((self.mday-1).days + self.seconds_since_midnight)
|
#self - ((self.mday-1).days + self.seconds_since_midnight)
|
||||||
last_day = ::Time.days_in_month(month, year)
|
last_day = ::Time.days_in_month(month, year)
|
||||||
change(:day => last_day, :hour => 23, :min => 59, :sec => 59, :usec => 0)
|
change(:day => last_day, :hour => 23, :min => 59, :sec => 59, :usec => 999999.999)
|
||||||
end
|
end
|
||||||
alias :at_end_of_month :end_of_month
|
alias :at_end_of_month :end_of_month
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ class Time
|
||||||
end
|
end
|
||||||
alias :at_beginning_of_quarter :beginning_of_quarter
|
alias :at_beginning_of_quarter :beginning_of_quarter
|
||||||
|
|
||||||
# Returns a new Time representing the end of the quarter (last day of march, june, september, december, 23:59:59)
|
# Returns a new Time representing the end of the quarter (end of the last day of march, june, september, december)
|
||||||
def end_of_quarter
|
def end_of_quarter
|
||||||
beginning_of_month.change(:month => [3, 6, 9, 12].detect { |m| m >= month }).end_of_month
|
beginning_of_month.change(:month => [3, 6, 9, 12].detect { |m| m >= month }).end_of_month
|
||||||
end
|
end
|
||||||
|
@ -216,9 +216,9 @@ class Time
|
||||||
end
|
end
|
||||||
alias :at_beginning_of_year :beginning_of_year
|
alias :at_beginning_of_year :beginning_of_year
|
||||||
|
|
||||||
# Returns a new Time representing the end of the year (31st of december, 23:59:59)
|
# Returns a new Time representing the end of the year (end of the 31st of december)
|
||||||
def end_of_year
|
def end_of_year
|
||||||
change(:month => 12, :day => 31, :hour => 23, :min => 59, :sec => 59)
|
change(:month => 12, :day => 31, :hour => 23, :min => 59, :sec => 59, :usec => 999999.999)
|
||||||
end
|
end
|
||||||
alias :at_end_of_year :end_of_year
|
alias :at_end_of_year :end_of_year
|
||||||
|
|
||||||
|
|
|
@ -196,7 +196,7 @@ class DateExtCalculationsTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_end_of_day
|
def test_end_of_day
|
||||||
assert_equal Time.local(2005,2,21,23,59,59), Date.new(2005,2,21).end_of_day
|
assert_equal Time.local(2005,2,21,23,59,59,999999.999), Date.new(2005,2,21).end_of_day
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_xmlschema
|
def test_xmlschema
|
||||||
|
|
|
@ -85,45 +85,45 @@ class TimeExtCalculationsTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_end_of_day
|
def test_end_of_day
|
||||||
assert_equal Time.local(2007,8,12,23,59,59), Time.local(2007,8,12,10,10,10).end_of_day
|
assert_equal Time.local(2007,8,12,23,59,59,999999.999), Time.local(2007,8,12,10,10,10).end_of_day
|
||||||
with_env_tz 'US/Eastern' do
|
with_env_tz 'US/Eastern' do
|
||||||
assert_equal Time.local(2007,4,2,23,59,59), Time.local(2007,4,2,10,10,10).end_of_day, 'start DST'
|
assert_equal Time.local(2007,4,2,23,59,59,999999.999), Time.local(2007,4,2,10,10,10).end_of_day, 'start DST'
|
||||||
assert_equal Time.local(2007,10,29,23,59,59), Time.local(2007,10,29,10,10,10).end_of_day, 'ends DST'
|
assert_equal Time.local(2007,10,29,23,59,59,999999.999), Time.local(2007,10,29,10,10,10).end_of_day, 'ends DST'
|
||||||
end
|
end
|
||||||
with_env_tz 'NZ' do
|
with_env_tz 'NZ' do
|
||||||
assert_equal Time.local(2006,3,19,23,59,59), Time.local(2006,3,19,10,10,10).end_of_day, 'ends DST'
|
assert_equal Time.local(2006,3,19,23,59,59,999999.999), Time.local(2006,3,19,10,10,10).end_of_day, 'ends DST'
|
||||||
assert_equal Time.local(2006,10,1,23,59,59), Time.local(2006,10,1,10,10,10).end_of_day, 'start DST'
|
assert_equal Time.local(2006,10,1,23,59,59,999999.999), Time.local(2006,10,1,10,10,10).end_of_day, 'start DST'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_end_of_week
|
def test_end_of_week
|
||||||
assert_equal Time.local(2008,1,6,23,59,59), Time.local(2007,12,31,10,10,10).end_of_week
|
assert_equal Time.local(2008,1,6,23,59,59,999999.999), Time.local(2007,12,31,10,10,10).end_of_week
|
||||||
assert_equal Time.local(2007,9,2,23,59,59), Time.local(2007,8,27,0,0,0).end_of_week #monday
|
assert_equal Time.local(2007,9,2,23,59,59,999999.999), Time.local(2007,8,27,0,0,0).end_of_week #monday
|
||||||
assert_equal Time.local(2007,9,2,23,59,59), Time.local(2007,8,28,0,0,0).end_of_week #tuesday
|
assert_equal Time.local(2007,9,2,23,59,59,999999.999), Time.local(2007,8,28,0,0,0).end_of_week #tuesday
|
||||||
assert_equal Time.local(2007,9,2,23,59,59), Time.local(2007,8,29,0,0,0).end_of_week #wednesday
|
assert_equal Time.local(2007,9,2,23,59,59,999999.999), Time.local(2007,8,29,0,0,0).end_of_week #wednesday
|
||||||
assert_equal Time.local(2007,9,2,23,59,59), Time.local(2007,8,30,0,0,0).end_of_week #thursday
|
assert_equal Time.local(2007,9,2,23,59,59,999999.999), Time.local(2007,8,30,0,0,0).end_of_week #thursday
|
||||||
assert_equal Time.local(2007,9,2,23,59,59), Time.local(2007,8,31,0,0,0).end_of_week #friday
|
assert_equal Time.local(2007,9,2,23,59,59,999999.999), Time.local(2007,8,31,0,0,0).end_of_week #friday
|
||||||
assert_equal Time.local(2007,9,2,23,59,59), Time.local(2007,9,01,0,0,0).end_of_week #saturday
|
assert_equal Time.local(2007,9,2,23,59,59,999999.999), Time.local(2007,9,01,0,0,0).end_of_week #saturday
|
||||||
assert_equal Time.local(2007,9,2,23,59,59), Time.local(2007,9,02,0,0,0).end_of_week #sunday
|
assert_equal Time.local(2007,9,2,23,59,59,999999.999), Time.local(2007,9,02,0,0,0).end_of_week #sunday
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_end_of_month
|
def test_end_of_month
|
||||||
assert_equal Time.local(2005,3,31,23,59,59), Time.local(2005,3,20,10,10,10).end_of_month
|
assert_equal Time.local(2005,3,31,23,59,59,999999.999), Time.local(2005,3,20,10,10,10).end_of_month
|
||||||
assert_equal Time.local(2005,2,28,23,59,59), Time.local(2005,2,20,10,10,10).end_of_month
|
assert_equal Time.local(2005,2,28,23,59,59,999999.999), Time.local(2005,2,20,10,10,10).end_of_month
|
||||||
assert_equal Time.local(2005,4,30,23,59,59), Time.local(2005,4,20,10,10,10).end_of_month
|
assert_equal Time.local(2005,4,30,23,59,59,999999.999), Time.local(2005,4,20,10,10,10).end_of_month
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_end_of_quarter
|
def test_end_of_quarter
|
||||||
assert_equal Time.local(2007,3,31,23,59,59), Time.local(2007,2,15,10,10,10).end_of_quarter
|
assert_equal Time.local(2007,3,31,23,59,59,999999.999), Time.local(2007,2,15,10,10,10).end_of_quarter
|
||||||
assert_equal Time.local(2007,3,31,23,59,59), Time.local(2007,3,31,0,0,0).end_of_quarter
|
assert_equal Time.local(2007,3,31,23,59,59,999999.999), Time.local(2007,3,31,0,0,0).end_of_quarter
|
||||||
assert_equal Time.local(2007,12,31,23,59,59), Time.local(2007,12,21,10,10,10).end_of_quarter
|
assert_equal Time.local(2007,12,31,23,59,59,999999.999), Time.local(2007,12,21,10,10,10).end_of_quarter
|
||||||
assert_equal Time.local(2007,6,30,23,59,59), Time.local(2007,4,1,0,0,0).end_of_quarter
|
assert_equal Time.local(2007,6,30,23,59,59,999999.999), Time.local(2007,4,1,0,0,0).end_of_quarter
|
||||||
assert_equal Time.local(2008,6,30,23,59,59), Time.local(2008,5,31,0,0,0).end_of_quarter
|
assert_equal Time.local(2008,6,30,23,59,59,999999.999), Time.local(2008,5,31,0,0,0).end_of_quarter
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_end_of_year
|
def test_end_of_year
|
||||||
assert_equal Time.local(2007,12,31,23,59,59), Time.local(2007,2,22,10,10,10).end_of_year
|
assert_equal Time.local(2007,12,31,23,59,59,999999.999), Time.local(2007,2,22,10,10,10).end_of_year
|
||||||
assert_equal Time.local(2007,12,31,23,59,59), Time.local(2007,12,31,10,10,10).end_of_year
|
assert_equal Time.local(2007,12,31,23,59,59,999999.999), Time.local(2007,12,31,10,10,10).end_of_year
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_beginning_of_year
|
def test_beginning_of_year
|
||||||
|
|
Loading…
Reference in a new issue