You can use the strtotime () php function to convert a string to time. When converting easy stuff like ’05/29/2019′, or ‘2019-05-29’, things are easy and predictable:
$string ="05/29/2019"; print $string ." => ". date('Y-m-d',strtotime($string)); $string ="2029-05-29"; print $string ." => ". date('Y-m-d',strtotime($string)); $string ="29.05.2019"; print $string ." => ". date('Y-m-d',strtotime($string))";
All of above will output: 2019-05-29
Which also works fine when using strings with times:
$string ="05/29/2019 16:05:01"; print $string ." => ". date('Y-m-d H:i:s',strtotime($string)); $string ="20190529T160501"; print $string ." => ". date('Y-m-d H:i:s',strtotime($string));
All of above will output: 2019-05-29 16:05:01
When converting times you’ll need to be aware that timestamps such as ‘20190529T160501Z’ define time in UTC and their conversion will happen according to the default_timezone of your php. So…
$string ="20190529T160000Z"; print $string ." => ". date('Y-m-d H:i:s T',strtotime($string)); print "!!! Time conversion based on the current php time zone: ".date_default_timezone_get()." !!!";
This will output time according to the current timezone. My output would be:
2019-05-29 17:00:00 BST !!! Time zone conversion based on the current time zone php setting: Europe/London !!!
If you need to convert time in a specific timezone you need to set the default_timezone first…
$string ="20190529T160000Z"; date_default_timezone_set('America/Chicago'); print $string ." => ". date('Y-m-d H:i:s T',strtotime($string)); print "!!! Time conversion based on the current php time zone: ".date_default_timezone_get()." !!!";
Which outputs now:
2019-05-29 11:00:00 CDT !!! Time zone conversion based on the current time zone php setting: America/Chicago !!!
To convert any time to a specific time zone, need to use the “UTC” parameter:
$string ="05/29/2019 16:05:01"; date_default_timezone_set('America/Chicago'); print $string ." => ". date('Y-m-d H:i:s T',strtotime($string." UTC"))
Remember: Once you’ve used strtotime for a UTC timestamp you don’t need to do yet another conversion. Just make sure you have the correct timezone set before calling strtotime