Index: src/date.js |
=================================================================== |
--- src/date.js (revision 4331) |
+++ src/date.js (working copy) |
@@ -588,6 +588,20 @@ |
function LocalTimezoneString(time) { |
+ var old_timezone = timezone_cache_timezone; |
+ var timezone = LocalTimezone(time); |
+ if (old_timezone && timezone != old_timezone) { |
+ // If the timezone string has changed from the one that we cached, |
+ // the local time offset may now be wrong. So we need to update it |
+ // and try again. |
+ local_time_offset = %DateLocalTimeOffset(); |
+ // We also need to invalidate the DST cache as the new timezone may have |
+ // different DST times. |
+ var dst_cache = DST_offset_cache; |
+ dst_cache.start = 0; |
+ dst_cache.end = -1; |
+ } |
+ |
var timezoneOffset = |
(DaylightSavingsOffset(time) + local_time_offset) / msPerMinute; |
var sign = (timezoneOffset >= 0) ? 1 : -1; |
@@ -595,7 +609,7 @@ |
var min = FLOOR((sign * timezoneOffset)%60); |
var gmt = ' GMT' + ((sign == 1) ? '+' : '-') + |
TwoDigitString(hours) + TwoDigitString(min); |
- return gmt + ' (' + LocalTimezone(time) + ')'; |
+ return gmt + ' (' + timezone + ')'; |
} |