为什么此日期格式继续更改为1970-01-01?

时间:2018-07-16 16:04:21

标签: php date

我试图将日期04/03/1992转换为1992-04-03,以便可以将其插入DATE格式的SQL表中。

下面是我的PHP代码。由于某些原因,它有时只能转换为1970-01-01

例如如果我尝试将2021年4月13日转换为1970-01-01,则打印出来

下面的代码-

$date = $_POST["dateOfBirth"];
$dateToTime = strtotime($date);
$DOB = date("Y-m-d", $dateToTime);

$licenseNumber = $_POST["licenseNumber"];

$licenseDate = $_POST["licenseExpiryDate"];
$licenseDateToTime = strtotime($licenseDate);
$licenseExpiryDate = date('Y-m-d', $licenseDateToTime);

1 个答案:

答案 0 :(得分:2)

当您使用正斜杠/和破折号-时,strtotime函数很敏感。下面是来自php.net的引言来解释。

  

m / d / y或d-m-y格式的日期通过查看来消除歧义   各个组件之间的分隔符:如果分隔符是   斜线(/),则假定为美国m / d / y;而如果   分隔符是破折号(-)或点(。),然后是欧洲d-m-y格式   是假定的。

您的日期为欧洲格式,因此最简单的解决方案是使用/函数将斜杠-替换为短划线str_replace

$date = str_replace("/","-",$_POST["dateOfBirth"]); $dateToTime = strtotime($date); $DOB = date("Y-m-d", $dateToTime);

$licenseNumber = $_POST["licenseNumber"];

$licenseDate = str_replace("/","-",$_POST["licenseExpiryDate"]); $licenseDateToTime = strtotime($licenseDate); $licenseExpiryDate = date('Y-m-d', $licenseDateToTime);