lovis91
lovis91

Reputation: 2171

Carbon parse date format

I'm trying to parse a date formated like :

2017-09-20T10:59:10.0000000 01:00

I'm using Carbon, so i tried :

Carbon::createFromFormat('Y-m-dTH:i:s.u vP', $date)

Which output :

The timezone could not be found in the database\n
Unexpected data found.\n
Data missing

I guess the last timezone argument maybe wrong but i couldn't find how to parse that date format :/

Thanks for help !

Upvotes: 10

Views: 33061

Answers (1)

Alexey Mezenin
Alexey Mezenin

Reputation: 163978

You'll need to add a sign to the timezone, for example:

+01:00

Then this will work for you:

Carbon::createFromFormat('Y-m-d\TH:i:s.0000000 P', $date)

If your string can have -01:00 but instead of +01:00 you're getting 01:00, do this first:

$timezone = str_after($date, ' ');
if ($timezone[0] !== '-') {
    $date = str_before($date, ' ') . ' +' . $timezone;
}

Upvotes: 11

Related Questions