david singleton wrote:
Is this a known problem? Or a problem with how the timezones are defined?
I think you're confusing yourself by the way you're setting the time. It's always difficult to test timezone offset issues when you're stating the test times in local time. By the way, your testing method of modifying the system clock is problematic. It's much better to use the -d option of GNU date to display a particular time without touching the clock. Looking at DST ending with the zone you describe, I get: $ export TZ="NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0" $ date -d '2012-03-17 12:55 Z' +'%F %T %z %Z %s' 2012-03-18 01:55:00 +1300 NZDT 1331988900 $ date -d '2012-03-17 13:05 Z' +'%F %T %z %Z %s' 2012-03-18 01:05:00 +1200 NZST 1331989500 This looks perfectly correct to me. I've specified (in UT, that's the "Z") times that are ten minutes apart. The final number in the output (%s) is (except for leap seconds) a linear count of seconds, and you can see it's increased by 600, confirming that these times really are exactly ten minutes apart. The times span the end of DST, and they show that the NZ local clock (%T) jumped back an hour. The jump is explained by the UT offset (%z) having reduced by an hour, and you can see the abbreviation (%Z) has also changed accordingly. -zefram