PHP DateTime createFromFormat c fails
PHP has a datetime format character for ISO 8601 named
c, that outputs a datetime string like this:
There's a problem with this character when you use it with
DateTime::createFromFormat – it fails.
// Returns false $datetime = DateTime::createFromFormat('c', '2019-02-06T23:19:33-01:00');
The character can be used with
date function, and it works.
$date = date('c');
It also works when it's used with
$datetime = (new \DateTime())->format('c');
I couldn't find the reason behind this, but I found a workaround. From the datetime string we can use the date and time character formats, what's missing it's what format character to use for the timezone offset.
Why I am trying to do here? I want to confirm the input datetime is of an
After looking at the date function format list, there's a format character to determine the offset time.
PDifference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3) Example: +02:00
Instead of using
c, we are going to use the following format:
$datetime = DateTime::createFromFormat('Y-m-d\TH:i:sP', '2019-02-06T23:19:33-01:00');