Php 为什么该日期格式继续更改为1970-01-01?
我正在尝试将日期04/03/1992转换为1992-04-03,以便将其插入到日期格式的SQL表中 下面是我的PHP代码。由于某些原因,仅在某些情况下转换为1970-01-01 例如,如果我尝试转换2021年4月13日,则打印为1970-01-01 代码如下-Php 为什么该日期格式继续更改为1970-01-01?,php,date,Php,Date,我正在尝试将日期04/03/1992转换为1992-04-03,以便将其插入到日期格式的SQL表中 下面是我的PHP代码。由于某些原因,仅在某些情况下转换为1970-01-01 例如,如果我尝试转换2021年4月13日,则打印为1970-01-01 代码如下- $date = $_POST["dateOfBirth"]; $dateToTime = strtotime($date); $DOB = date("Y-m-d", $dateToTime); $licenseNumber = $_P
$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);
当您使用前斜杠
/
和破折号-
时,strotime函数对以下情况非常敏感。下面引用php.net中的一段话进行解释
m/d/y或d-m-y格式的日期通过查看
不同组件之间的分隔符:如果分隔符是
斜杠(/),则假定为美式m/d/y;然而,如果
分隔符是破折号(-)或点(.),然后是欧洲d-m-y格式
这是假定的
您的日期为欧洲格式,因此最简单的解决方案是使用str\u 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);
因为2021年4月13日是m/d/Y而不是你所期望的d/m/Y。您知道哪一个月是13号吗?
通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式中日期的歧义:如果分隔符是斜杠(/),则假定为美式m/d/y;而如果分隔符是破折号(-)或点(.),则假定为欧洲d-m-y格式。但是,如果年份以两位数格式给出,且分隔符为破折号(-),则日期字符串将解析为y-m-d。
-读取文档:。。。“注意:m/d/y或d-m-y格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假定为美国的m/d/y;”您似乎理解这一点,因为您编写的04/03/1992
是1992-04-03
。这意味着13/04/2021
将是2021-13-04
。除非特朗普在卸任前计划日历改革,否则就不会有第13个月。谢谢,伙计——与其他无用的回答不同,这是完美的,也正是我想要的。非常感谢:)!