mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Introduce Date#all_day
Useful for queries like: Item.where(created_at: Date.current.all_day) There was already a Time#all_day with the same behaviour, but for queries like the above, Date is more convenient.
This commit is contained in:
parent
a0b3de3002
commit
f005202972
3 changed files with 22 additions and 5 deletions
|
@ -294,6 +294,11 @@ module DateAndTime
|
|||
end
|
||||
alias :at_end_of_year :end_of_year
|
||||
|
||||
# Returns a Range representing the whole day of the current date/time.
|
||||
def all_day
|
||||
beginning_of_day..end_of_day
|
||||
end
|
||||
|
||||
# Returns a Range representing the whole week of the current date/time.
|
||||
# Week starts on start_day, default is <tt>Date.week_start</tt> or <tt>config.week_start</tt> when set.
|
||||
def all_week(start_day = Date.beginning_of_week)
|
||||
|
|
|
@ -227,11 +227,6 @@ class Time
|
|||
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
|
||||
end
|
||||
|
||||
def plus_with_duration(other) #:nodoc:
|
||||
if ActiveSupport::Duration === other
|
||||
other.since(self)
|
||||
|
|
|
@ -284,6 +284,23 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_all_day
|
||||
beginning_of_day = Time.local(2011,6,7,0,0,0)
|
||||
end_of_day = Time.local(2011,6,7,23,59,59,Rational(999999999, 1000))
|
||||
assert_equal beginning_of_day..end_of_day, Date.new(2011,6,7).all_day
|
||||
end
|
||||
|
||||
def test_all_day_when_zone_is_set
|
||||
zone = ActiveSupport::TimeZone["Hawaii"]
|
||||
with_env_tz "UTC" do
|
||||
with_tz_default zone do
|
||||
beginning_of_day = zone.local(2011,6,7,0,0,0)
|
||||
end_of_day = zone.local(2011,6,7,23,59,59,Rational(999999999, 1000))
|
||||
assert_equal beginning_of_day..end_of_day, Date.new(2011,6,7).all_day
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_all_week
|
||||
assert_equal Date.new(2011,6,6)..Date.new(2011,6,12), Date.new(2011,6,7).all_week
|
||||
assert_equal Date.new(2011,6,5)..Date.new(2011,6,11), Date.new(2011,6,7).all_week(:sunday)
|
||||
|
|
Loading…
Reference in a new issue