Php 字符串转换为datetime返回不正确的日期

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

我正在尝试将这两个日期转换为日期时间: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[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