PHP strtotime() function that accepts a format?

跟風遠走 提交于 2019-12-04 11:40:30

问题


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

回答1:


If you have PHP 5.3:

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



回答2:


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.




回答3:


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



来源:https://stackoverflow.com/questions/5871963/php-strtotime-function-that-accepts-a-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!