module DateAndTime::Calculations

def next_week(given_day_in_next_week = Date.beginning_of_week, same_time: false)

now.next_week # => Mon, 11 May 2015 00:00:00 +0000
now = DateTime.current # => Thu, 07 May 2015 13:31:16 +0000

+DateTime+ objects have their time set to 0:00 unless +same_time+ is true.

today.next_week(:friday) # => Fri, 15 May 2015
today = Date.today # => Thu, 07 May 2015

when set.
which is determined by +Date.beginning_of_week+ or +config.beginning_of_week+
The +given_day_in_next_week+ defaults to the beginning of the week

today.next_week # => Mon, 11 May 2015
today = Date.today # => Thu, 07 May 2015

Returns a new date/time representing the given day in the next week.
def next_week(given_day_in_next_week = Date.beginning_of_week, same_time: false)
  result = first_hour(weeks_since(1).beginning_of_week.days_since(days_span(given_day_in_next_week)))
  same_time ? copy_time_to(result) : result
end