Search code examples
phpdatezend-frameworkutc

Zend_Date use Z instead of +00:00 for ISO 8601


Zend_Date returns +00:00 instead of Z:

$date = $order->getCreatedAtStoreDate();
$date->setTimezone('UTC');
$date->toString(Zend_Date::ISO_8601)
// Returns: 2011-07-21T15:18:36+00:00

Wanted: 2011-07-21T15:18:36Z

Anyway I can make Zend_Date to use Z?

I got a workaround with str_replace('+00:00', 'Z', $date->toString(Zend_Date::ISO_8601)) but I don't like that.


Solution

  • As it's a valid ISO 8601 implementation and none of the other date constants will get you what you want, you should probably just use your own formatter string: $date->toString('Y-m-d\TH:i:s\Z');

    Note that this is only correct behavior when you set the time zone to UTC first, so you may want to wrap them together in a quick helper.