abe*_*lvf 2 html php timestamp date
我的问题是,当我尝试在我的数据库中保存我收到此日期的日期: 1970-01-01
这是我的HTML代码:
<input type="text" name="dob" value="<?php echo $rows['dob']; ?>" required title="The Date of Birth is required" pattern="(0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])[-](19|20)\d\d"></input>
Run Code Online (Sandbox Code Playgroud)
这是我的PHP代码获取值:
$dob = $_POST['dob'];
echo $dob.'<br>';
$dob_new = date('Y-m-d', strtotime($dob));
echo $dob_new.'<br>';
Run Code Online (Sandbox Code Playgroud)
这是结果:
01-22-1984
1970-01-01
Run Code Online (Sandbox Code Playgroud)
第一个日期是用户可以输入的日期和第二个日期是转换结果的一个示例!
神秘之处在于,有时候这项工作有时却没有...所以这里发生了什么?有什么建议吗?我的代码中有错误吗?
当您使用短划线作为日期分隔符时,PHP假定为欧洲日期格式,即DD-MM-YYYY.你的是MM-DD-YYYY.结果strtotime()
认为它有一个无效的日期并返回false,这导致date()
返回您看到的日期,即Unix Epoch.
要解决此问题,您需要以正确的格式发送日期或使用正确DateTime::createFromFormat()
解析日期.
$date = DateTime::createFromFormat('m-d-Y', $_POST['dob']);
$dob_new = $date->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)