我试图将日期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);
答案 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);