mirror of
https://github.com/github/rails.git
synced 2026-01-30 08:48:06 -05:00
Time#in_time_zone handles Time.local instances correctly
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8849 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Time#in_time_zone handles Time.local instances correctly [Geoff Buesing]
|
||||
|
||||
* Pruning unneeded Time#change_time_zone_to_current. Enhanced docs to #change_time_zone to explain the difference between this method and #in_time_zone [Geoff Buesing]
|
||||
|
||||
* TimeZone#new method renamed #local; when used with Time.zone, constructor now reads: Time.zone.local() [Geoff Buesing]
|
||||
|
||||
@@ -42,15 +42,13 @@ module ActiveSupport #:nodoc:
|
||||
end
|
||||
end
|
||||
|
||||
# Returns the simultaneous time in the supplied zone. self is assumed to be in UTC regardless of constructor.
|
||||
#
|
||||
# Examples:
|
||||
# Returns the simultaneous time in the supplied zone. Examples:
|
||||
#
|
||||
# t = Time.utc(2000) # => Sat Jan 01 00:00:00 UTC 2000
|
||||
# t.in_time_zone('Alaska') # => Fri, 31 Dec 1999 15:00:00 AKST -09:00
|
||||
# t.in_time_zone('Hawaii') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
|
||||
def in_time_zone(zone)
|
||||
ActiveSupport::TimeWithZone.new(self, get_zone(zone))
|
||||
ActiveSupport::TimeWithZone.new(utc? ? self : getutc, get_zone(zone))
|
||||
end
|
||||
|
||||
# Returns the simultaneous time in Time.zone
|
||||
|
||||
@@ -174,6 +174,15 @@ uses_tzinfo 'TimeWithZoneTest' do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_in_time_zone_with_time_local_instance
|
||||
silence_warnings do # silence warnings raised by tzinfo gem
|
||||
with_env_tz 'US/Eastern' do
|
||||
time = Time.local(1999, 12, 31, 19) # == Time.utc(2000)
|
||||
assert_equal 'Fri, 31 Dec 1999 15:00:00 AKST -09:00', time.in_time_zone('Alaska').inspect
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_in_current_time_zone
|
||||
Time.use_zone 'Alaska' do
|
||||
@@ -228,5 +237,13 @@ uses_tzinfo 'TimeWithZoneTest' do
|
||||
assert_equal TimeZone['Hawaii'], t2[:time_zone]
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
def with_env_tz(new_tz = 'US/Eastern')
|
||||
old_tz, ENV['TZ'] = ENV['TZ'], new_tz
|
||||
yield
|
||||
ensure
|
||||
old_tz ? ENV['TZ'] = old_tz : ENV.delete('TZ')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user