robwilliams/nextday — pull request #1 by giddie (2014-08-18 13:46:50+00:00)
Title: Ensure that the cut-off time is in the same timezone as the extended object

If we don't match the UTC offset, and the system timezone is not UTC, you end up
with the following scenario:

##### Scenario 1 (correct)
```ruby
Time.now # 2014-08-15 15:30:00 +0100
Time.now.cut_off_time # 2014-08-15 16:00:00 +0100
Time.now.despatch_day # Fri, 15 Aug 2014
```

##### Scenario 2 (incorrect)
``` ruby
Time.zone.now # Fri, 15 Aug 2014 15:30:00 BST +01:00
Time.zone.now.cut_off_time # Fri, 15 Aug 2014 16:00:00 BST +01:00
Time.zone.now.despatch_day # Mon, 18 Aug 2014
```

The incorrect result in Scenario 2 is due to the fact that the
ActiveSupport::TimeWithZone class wraps a UTC time object and maintains the
timezone data separately. When DateExtension.despatch_day is called in Scenario
2, the context is:

``` ruby
self # 2014-08-15 15:30:00 UTC
cut_off_time # 2014-08-15 16:00:00 +0100
```

This comparison is incorrect due to the mismatch in timezones and produces the
wrong result. The fix is to construct the cut_off_time based on the timezone
of #self.