Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert ISO8601 to Date format in php

How to convert this (in ISO8601 format): 2014-03-13T09:05:50.240Z

To this (in MySQL DATE format): 2014-03-13

in php?

like image 289
Neel Avatar asked Mar 13 '14 10:03

Neel


3 Answers

try this

$date = '2014-03-13T09:05:50.240Z';

$fixed = date('Y-m-d', strtotime($date));

The complete date function documentation can be found here: http://php.net/manual/en/function.date.php

The PHP function "strtotime" does nothing else then converting your timestring into an unix timestamp.

Hope I could help :)

P.s.: Just in case strtotime will return 0 try using this:

$date = '2014-03-13T09:05:50.240Z';

$fixed = date('Y-m-d', strtotime(substr($date,0,10)));
like image 192
ThatMSG Avatar answered Oct 17 '22 11:10

ThatMSG


Since PHP 5.2.0 you can do it using OOP and DateTime() as well (of course if you prefer OOP):

$now = new DateTime("2014-03-13T09:05:50.240Z");
echo $now->format('Y-m-d');    // MySQL datetime format
like image 36
Faisal Avatar answered Oct 17 '22 11:10

Faisal


There is no reason to use the inefficient time functions. The most efficient way is to simply extract the first 10 characters:

substr($date,0,10)

People, that are really coding for year ≥10000, can use:

substr($date,0,strpos($date,"T"))
like image 4
Wiimm Avatar answered Oct 17 '22 10:10

Wiimm