I\'m trying to represent a UTC timestamp in different timezones using PHP\'s date_default_timezone_set function. Daylight saving has just kicked in here (NZ) and in Austral
A few things:
You should prefer the canonical form of the time zone name whenever possible. The zones you mentioned are actually links (aka aliases). Refer to this chart for details. Specifically:
NZ => Pacific/Auckland
Australia/NSW => Australia/Sydney
Australia/North => Australia/Darwin
Australia/South => Australia/Adelaide
There are actually 5 major regions of Australia with differing time zone rules. You may wish to refer to this Wikipedia article for details.
Australia/Darwin
(aka, Australia/North
) does not observe daylight saving time at all.
The other two time zones (Sydney & Adelaide) would indeed be on daylight saving time at the date and time you specified. However, names and abbreviations for Australian time zones have not necessarily been absolutely clear. For example, Sydney's daylight name has been referred to by all of the following:
PHP pulls its time zones from the IANA time zone database. Time zone abbreviations are also taken from the same source. For a very long time, this data set used the ambiguous abbreviation of "EST" for both Eastern Standard Time and Eastern Summer Time.
This was changed recently, in version 2014f. You can read the details in the release notes. It now uses AEST for standard time, and AEDT for daylight time.
You can get this change by updating PHP's timezonedb to version 2014.6 or greater. You can find instructions for updating here or here.
Alternatively, you can just update to the latest version of PHP. Based on the release dates, I think PHP version 5.3.29 should have shipped with timezonedb 2014.6. Use that version or newer and you should get the new abbreviations.
You can also call timezone_version_get() to see what version of timezonedb you have. It should be 2014.6 or greater to receive the new abbreviations.