Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:将日期时间变量转换为日期_Php_Date_Time_Strtotime - Fatal编程技术网

PHP:将日期时间变量转换为日期

PHP:将日期时间变量转换为日期,php,date,time,strtotime,Php,Date,Time,Strtotime,我正在尝试将日期和时间变量转换为仅使用不同格式的日期: $test_date = '01/07/2018 10:00-12:00'; $result = substr($test_date, 0, 10); $newDate = date("Ymd", strtotime($result)); echo $newDate; 预期结果=20180701 实际结果=20180107 尝试了我在这里能找到的所有相对变化,但继续使用“Ydm”而不是“Ymd” 我在这里遗漏了一些明显的东西?看起来它被“

我正在尝试将日期和时间变量转换为仅使用不同格式的日期:

$test_date = '01/07/2018 10:00-12:00';
$result = substr($test_date, 0, 10);
$newDate = date("Ymd", strtotime($result));
echo $newDate;
预期结果=20180701 实际结果=20180107

尝试了我在这里能找到的所有相对变化,但继续使用“Ydm”而不是“Ymd”


我在这里遗漏了一些明显的东西?

看起来它被“错误地”解析了,因为它没有明确说明源格式是什么,使用
DateTime
对象,您可以执行(未测试):


$newDate=date(“Ymd”,strotime($test_date))是您实际需要的全部,您是否使用合理的日期格式或美式日期格式通过查看各个组件之间的分隔符来消除m/d/y或d-m-y格式中的日期歧义:如果分隔符是斜杠(/),则假定美式m/d/y;如果分隔符是破折号(-)或点(.),则假定为欧洲d-m-y格式。@RiggsFollythats仍然给出“Ydm”,我猜如果使用/有效,则为美国格式,因此您必须定义当前格式?明确有助于避免令人不快的意外,否则您将由内部决定,我相信它倾向于默认为美式格式,但可能取决于@abracadver提到的分隔符,我必须查找它。
$result = substr($test_date, 0, 10);
$dateTime = DateTime::createFromFormat('d/m/Y', $result);
$newDate = $dateTime->format('Y-m-d');
echo $newDate;