diff options
author | Xavier Noria <fxn@hashref.com> | 2011-11-25 12:01:58 -0800 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2011-11-25 12:02:49 -0800 |
commit | a5b362df567ed4a0167a83e9b8f00b9f614ac38b (patch) | |
tree | eee250cadf593bc6ab901167d0ba0d5cf73d6982 /activesupport/lib | |
parent | 7a33a005d732e80f5a6832b67df6dec5a6faaa1e (diff) | |
download | rails-a5b362df567ed4a0167a83e9b8f00b9f614ac38b.tar.gz rails-a5b362df567ed4a0167a83e9b8f00b9f614ac38b.tar.bz2 rails-a5b362df567ed4a0167a83e9b8f00b9f614ac38b.zip |
some tweaks to PR#3547. [Closes #3547]
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/core_ext/date/calculations.rb | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/activesupport/lib/active_support/core_ext/date/calculations.rb b/activesupport/lib/active_support/core_ext/date/calculations.rb index ea9a1c2c0d..0c4081aa8d 100644 --- a/activesupport/lib/active_support/core_ext/date/calculations.rb +++ b/activesupport/lib/active_support/core_ext/date/calculations.rb @@ -174,24 +174,28 @@ class Date months_since(1) end unless method_defined?(:next_month) - # Returns number of days to start of this week, week starts on start_day (default is :monday). + # Returns number of days to start of this week. Week is assumed to start on + # +start_day+, default is +:monday+. def days_to_week_start(start_day = :monday) start_day_number = DAYS_INTO_WEEK[start_day] current_day_number = wday != 0 ? wday - 1 : 6 - days_span = current_day_number - start_day_number - days_span >= 0 ? days_span : 7 + days_span + (current_day_number - start_day_number) % 7 end - # Returns a new Date/DateTime representing the "start" of this week, week starts on start_day (default is :monday, i.e. Monday; DateTime objects will have time set to 0:00). + # Returns a new +Date+/+DateTime+ representing the start of this week. Week is + # assumed to start on +start_day+, default is +:monday+. +DateTime+ objects + # have their time set to 0:00. def beginning_of_week(start_day = :monday) days_to_start = days_to_week_start(start_day) result = self - days_to_start - self.acts_like?(:time) ? result.midnight : result + acts_like?(:time) ? result.midnight : result end alias :monday :beginning_of_week alias :at_beginning_of_week :beginning_of_week - # Returns a new Date/DateTime representing the end of this week, week starts on start_day (default is :monday, i.e. Sunday, DateTime objects will have time set to 23:59:59). + # Returns a new +Date+/+DateTime+ representing the end of this week, week + # starts on +start_day+, default is +:monday+. +DateTime+ objects have their + # time set to 23:59:59). def end_of_week(start_day = :monday) days_to_end = 6 - days_to_week_start(start_day) result = self + days_to_end.days @@ -200,7 +204,8 @@ class Date alias :sunday :end_of_week alias :at_end_of_week :end_of_week - # Returns a new Date/DateTime representing the start of the given day in the previous week (default is :monday). + # Returns a new +Date+/+DateTime+ representing the given +day+ in the previous + # week. Default is +:monday+. +DateTime+ objects have their time set to 0:00. def prev_week(day = :monday) result = (self - 7).beginning_of_week + DAYS_INTO_WEEK[day] self.acts_like?(:time) ? result.change(:hour => 0) : result |