PHP strtotime() function that accepts a format?

2019-03-20 13:55发布

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");

3条回答
Juvenile、少年°
2楼-- · 2019-03-20 14:14

If you have PHP 5.3:

$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00');
echo $date->getTimestamp();
查看更多
手持菜刀,她持情操
3楼-- · 2019-03-20 14:19

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()

查看更多
甜甜的少女心
4楼-- · 2019-03-20 14:26

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.

查看更多
登录 后发表回答