Home » Php » datetime – PHP strtotime() function that accepts a format?

datetime – PHP strtotime() function that accepts a format?

Posted by: admin July 12, 2020 Leave a comment

Questions:

strtotime() in PHP works great if you can provide it with a date format it understands and can convert, but for example you give it a UK date it fails to give the correct unix timestamp.

Is there any PHP function, official or unofficial, that can accept a format variable that tells the function in which format the date and time is being passed?

The closest I have come to doing this is a mixture of date_parse_from_format() and mktime()

// Example usage of the function I'm after
//Like the date() function but in reverse
$timestamp = strtotimeformat("03/05/2011 16:33:00", "d/m/Y H:i:s");
How to&Answers:

If you have PHP 5.3:

$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00');
echo $date->getTimestamp();

Answer:

You are looking for strptime, I think. you can use it to parse the date and then use mktime if you need a UNIX timestamp.

function strotimeformat($date, $format) {
  $d = strptime($date, $format);
  return mktime($d['tm_hour'], $d['tm_min'], $d['tm_sec'],
                $d['tm_mon'], $d['tm_mday'], $d['tm_year']);
}

This will work with PHP 5.1 and onwards.

Answer:

strtotime assumes it’s a US date/time when using / as the separator. To get it to think it’s a Euro date/time, use - or . as the date separator. You can change the /s to -s or .s with a simple str_replace()