0

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.

Jason
  • 4,411
  • 7
  • 40
  • 53
  • Maybe I treat the time string from Xero as UTC, then add or subtract the offset that the Xero timezone defines, to give me the *real* UTC datetime? Is it as simple as that? – Jason Aug 17 '15 at 21:52
  • However, you still want to know what timezone the date was originally in. Just having a UTC timestamp with no context is not useful when that original timezone contains context. – Jason Aug 17 '15 at 22:09

0 Answers0