You can format a date/time in the ISO-8601 format using the
DateTime class in PHP in the following ways:
The pre-defined constant
DateTime::ATOM can be used to format date/time in the ISO-8601 format. You can use it in the following way:
$datetime = new DateTime('2021-01-03 02:30:00', new DateTimeZone('Europe/Berlin')); echo $datetime->format(DateTime::ATOM); // output: '2021-01-03T02:30:00+01:00'
This constant is actually defined in
'Y-m-d\TH:i:sP') so it can be used with any date/time class that implements the interface. Alternatively, you may also use the global constant
There is also a
DateTime::ISO8601 format (and its global constant variant
DATE_ISO8601) which is not compatible with ISO-8601, and exists for backward compatibility reasons. You should use
DateTime::ATOM instead. To learn more about this, you can check out our post about the differences between
c Format Character
Another way to format the date/time in the ISO-8601 format is to use the "
c" formatting character like so:
$datetime = new DateTime('2021-01-03 02:30:00', new DateTimeZone('Europe/Berlin')); echo $datetime->format('c'); // output: '2021-01-03T02:30:00+01:00'
This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.