Php 字符串转换为datetime返回不正确的日期
我正在尝试将这两个日期转换为日期时间:2019年9月16日15:00:00-2019年9月21日09:00:00 但两个日期的日期时间都不正确:Php 字符串转换为datetime返回不正确的日期,php,datetime,Php,Datetime,我正在尝试将这两个日期转换为日期时间:2019年9月16日15:00:00-2019年9月21日09:00:00 但两个日期的日期时间都不正确: $duration = "16/09/2019 15:00:00 - 21/09/2019 09:00:00"; $duration = explode('-', $duration); $start = strtotime($duration[0]); $end = strtotime($duration
$duration = "16/09/2019 15:00:00 - 21/09/2019 09:00:00";
$duration = explode('-', $duration);
$start = strtotime($duration[0]);
$end = strtotime($duration[1]);
echo date('d/M/Y H:i:s', $start);
echo date('d/M/Y H:i:s', $end);
结果:
1969年12月31日16:00:00
1969年12月31日16:00:00
尝试使用:
期望得到一个包含英文日期格式的字符串
格式中的M(大写)除了一个月的文本表示,在您的情况下使用M(小写)首先,您需要设置日期,如dd-mm-yyyy 第二,像“-”一样使用分隔符进行分解 比如说
$date = date_create_from_format('j-M-Y', '15-Feb-2009');
echo date_format($date, 'Y-m-d');
输出
2009-02-15
你的回答
$duration = "16/09/2019 15:00:00 - 21/09/2019 09:00:00";
$duration = explode(' - ', $duration);
$date = date_create_from_format('d/m/Y:H:i:s', $duration[0]);
echo $date->getTimestamp();
$date = date_create_from_format('d/m/Y:H:i:s', $duration[1]);
echo $date->getTimestamp();
stringtotime接受格式为yyyy/mm/dd的表达式。此顺序可通过使用preg_replace的附加代码行实现
$duration = "16/09/2019 15:00:00 - 21/09/2019 09:00:00";
$duration = preg_replace('#(\d\d)/(\d\d)/(\d{4})#',"$3/$2/$1",$duration);
$duration = explode('-', $duration);
$start = strtotime($duration[0]);
$end = strtotime($duration[1]);
echo date('d/M/Y H:i:s', $start); // 16/Sep/2019 15:00:00
echo date('d/M/Y H:i:s', $end); // 21/Sep/2019 09:00:00
回波日期的输出(“d/M/Y H:i:s”,标准时间(“08-09-2019 14:00”)代码>似乎正常,
回显日期的输出(“d/M/Y H:i:s”,标准时间(“08/09/2019 14:00”)代码>返回八月,而不是九月。或者您可以将日期格式从'dd/mm/yyyy'更改为'yyyy/mm/dd'。
$duration = "16/09/2019 15:00:00 - 21/09/2019 09:00:00";
$duration = explode(' - ', $duration);
$date = date_create_from_format('d/m/Y:H:i:s', $duration[0]);
echo $date->getTimestamp();
$date = date_create_from_format('d/m/Y:H:i:s', $duration[1]);
echo $date->getTimestamp();
$duration = "16/09/2019 15:00:00 - 21/09/2019 09:00:00";
$duration = preg_replace('#(\d\d)/(\d\d)/(\d{4})#',"$3/$2/$1",$duration);
$duration = explode('-', $duration);
$start = strtotime($duration[0]);
$end = strtotime($duration[1]);
echo date('d/M/Y H:i:s', $start); // 16/Sep/2019 15:00:00
echo date('d/M/Y H:i:s', $end); // 21/Sep/2019 09:00:00