Convert one date format into another in PHP
date, date-conversion, datetime, format, php
Solution
The second parameter to `date()` needs to be a proper timestamp (seconds since January 1, 1970). You are passing a string, which date() can't recognize.
You can use strtotime() to convert a date string into a timestamp. However, even strtotime() doesn't recognize the `y-m-d-h-i-s` format.
PHP 5.3 and up
Use `DateTime::createFromFormat`. It allows you to specify an exact mask - using the `date()` syntax - to parse incoming string dates with.
PHP 5.2 and lower
You will have to parse the elements (year, month, day, hour, minute, second) manually using `substr()` and hand the results to mktime() that will build you a timestamp.
But that's a lot of work! I recommend using a different format that strftime() can understand. strftime() understands any date input short of `the next time joe will slip on the ice`. for example, this works:
$old_date = date('l, F d y h:i:s'); // returns Saturday, January 30 10 02:06:34
$old_date_timestamp = strtotime($old_date);
$new_date = date('Y-m-d H:i:s', $old_date_timestamp);
Problem
Is there a simple way to convert one date format into another date format in PHP? I have this: ``` $old_date = date('y-m-d-h-i-s'); // works $middle = strtotime($old_date); // returns bool(false) $new_date = date('Y-m-d H:i:s', $middle); // returns 1970-01-01 00:00:00 ``` But I'd of course like it to return a current date rather than the crack 'o dawn. What am I doing wrong?