diff options
| -rw-r--r-- | src/date.js | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/date.js b/src/date.js index 7d8f4588..b4027c13 100644 --- a/src/date.js +++ b/src/date.js @@ -613,6 +613,20 @@ function TimeString(time) { 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 = (local_time_offset + DaylightSavingsOffset(time)) / msPerMinute; var sign = (timezoneOffset >= 0) ? 1 : -1; @@ -620,7 +634,7 @@ function LocalTimezoneString(time) { var min = FLOOR((sign * timezoneOffset)%60); var gmt = ' GMT' + ((sign == 1) ? '+' : '-') + TwoDigitString(hours) + TwoDigitString(min); - return gmt + ' (' + LocalTimezone(time) + ')'; + return gmt + ' (' + timezone + ')'; } |
