A Xero account has a timezone that can be selected from the list defined here. Examples are:
- MOROCCOSTANDARDTIME = (UTC) Casablanca
- UTC = (UTC) Coordinated Universal Time
- GMTSTANDARDTIME = (UTC) Dublin, Edinburgh, Lisbon, London
- GREENWICHSTANDARDTIME = (UTC) Monrovia, Reykjavik
- WEUROPESTANDARDTIME = (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
Dates fetched from the Xero API look like the follow; this is a payment due date:
<Date>2015-07-17T00:00:00</Date>
From the documentation the implication is that stored dates, and presumably dates delivered by the API, should be interpreted as being in the timezone defined for the user account. i.e. the settings in Xero when logged in.
Now, I would like to put these dates into PHP DateTime
objects, with the correct Timezone
. Is there a mapping that can be used from the timezones that Xero uses to PHP timezones? So far as I can see, all usable PHP Timezones operate DST, but the timezones that Xero uses do not - they remain a constant offset from UTC all year around.
So for example, how would I convert "2015-07-17T00:00:00" on a Xero account set to WEUROPESTANDARDTIME, which is UTC+01:00 into a PHP DateTime
with a correct timezone? How about converting back? The PHP "UTC+N" timezones all come with a warning not to use them, as they are deprecated.