提交 6f380d37 编写于 作者: G Gagan Awhad

Added beginning_of_minute support to core_ext calculations for Time and DateTime

上级 38939795
## Rails 4.0.0 (unreleased) ##
* Added beginning_of_minute support to core_ext calculations for Time and DateTime
*Gagan Awhad*
* Add `:nsec` date format.
*Jamie Gaskins*
......
......@@ -123,6 +123,18 @@ def end_of_hour
change(:min => 59, :sec => 59)
end
alias :at_end_of_hour :end_of_hour
# Returns a new DateTime representing the start of the hour (hh:mm:00).
def beginning_of_minute
change(:sec => 0)
end
alias :at_beginning_of_minute :beginning_of_minute
# Returns a new DateTime representing the end of the minute (hh:mm:59).
def end_of_minute
change(:sec => 59)
end
alias :at_end_of_minute :end_of_minute
# Adjusts DateTime to UTC by adding its offset value; offset is set to 0.
#
......
......@@ -188,6 +188,21 @@ def end_of_hour
end
alias :at_end_of_hour :end_of_hour
# Returns a new Time representing the start of the hour (x:xx:00)
def beginning_of_minute
change(:sec => 0)
end
alias :at_beginning_of_minute :beginning_of_minute
# Returns a new Time representing the end of the hour, x:59:59.999999 (.999999999 in ruby1.9)
def end_of_minute
change(
:sec => 59,
:usec => Rational(999999999, 1000)
)
end
alias :at_end_of_minute :end_of_minute
# Returns a Range representing the whole day of the current time.
def all_day
beginning_of_day..end_of_day
......
......@@ -88,6 +88,14 @@ def test_end_of_hour
assert_equal DateTime.civil(2005,2,4,19,59,59), DateTime.civil(2005,2,4,19,30,10).end_of_hour
end
def test_beginning_of_minute
assert_equal DateTime.civil(2005,2,4,19,30,0), DateTime.civil(2005,2,4,19,30,10).beginning_of_minute
end
def test_end_of_minute
assert_equal DateTime.civil(2005,2,4,19,30,59), DateTime.civil(2005,2,4,19,30,10).end_of_minute
end
def test_end_of_month
assert_equal DateTime.civil(2005,3,31,23,59,59), DateTime.civil(2005,3,20,10,10,10).end_of_month
assert_equal DateTime.civil(2005,2,28,23,59,59), DateTime.civil(2005,2,20,10,10,10).end_of_month
......
......@@ -121,6 +121,10 @@ def test_beginning_of_hour
assert_equal Time.local(2005,2,4,19,0,0), Time.local(2005,2,4,19,30,10).beginning_of_hour
end
def test_beginning_of_minute
assert_equal Time.local(2005,2,4,19,30,0), Time.local(2005,2,4,19,30,10).beginning_of_minute
end
def test_end_of_day
assert_equal Time.local(2007,8,12,23,59,59,Rational(999999999, 1000)), Time.local(2007,8,12,10,10,10).end_of_day
with_env_tz 'US/Eastern' do
......@@ -137,6 +141,10 @@ def test_end_of_hour
assert_equal Time.local(2005,2,4,19,59,59,Rational(999999999, 1000)), Time.local(2005,2,4,19,30,10).end_of_hour
end
def test_end_of_minute
assert_equal Time.local(2005,2,4,19,30,59,Rational(999999999, 1000)), Time.local(2005,2,4,19,30,10).end_of_minute
end
def test_last_year
assert_equal Time.local(2004,6,5,10), Time.local(2005,6,5,10,0,0).last_year
end
......
......@@ -539,6 +539,20 @@ def test_end_of_hour
assert_equal "Fri, 31 Dec 1999 19:59:59 EST -05:00", twz.end_of_hour.inspect
end
def test_beginning_of_minute
utc = Time.utc(2000, 1, 1, 0, 30, 10)
twz = ActiveSupport::TimeWithZone.new(utc, @time_zone)
assert_equal "Fri, 31 Dec 1999 19:30:10 EST -05:00", twz.inspect
assert_equal "Fri, 31 Dec 1999 19:00:00 EST -05:00", twz.beginning_of_hour.inspect
end
def test_end_of_minute
utc = Time.utc(2000, 1, 1, 0, 30, 10)
twz = ActiveSupport::TimeWithZone.new(utc, @time_zone)
assert_equal "Fri, 31 Dec 1999 19:30:10 EST -05:00", twz.inspect
assert_equal "Fri, 31 Dec 1999 19:30:59 EST -05:00", twz.end_of_minute.inspect
end
def test_since
assert_equal "Fri, 31 Dec 1999 19:00:01 EST -05:00", @twz.since(1).inspect
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册