我正在使用具有以下格式的jquery datepicker mm / dd / yyyy但我需要它为sql db的yyyy-mm-dd所以我使用它.
$date = date("Y-m-d",strtotime($startdate));
以下内容
$query = "INSERT INTO complete_table ( name, startdate) VALUES ('$_POST[name]', '$date')";
不幸的是,无论输入是什么,我都会在数据库中注册1970-01-01.
对我做错了什么的想法?非常感谢你的帮助.
解决方法:
从date()返回1970-01-01时,表示时间戳不正确.那个日期是UNIX epoch.
说到Javascript(在这种情况下是一个日期选择器),你应该总是确保你得到的东西,实际上是你所期望的.简单地通过strtotime()传递它会导致像你这里的问题.
处理日期的一种好方法是使用datetime
扩展名.它有一个静态方法DateTime::createFromFormat
,它允许您使用任何格式解析任何日期:
// The value from the datepicker
$dpValue = '12/30/2013';
// Parse a date using a user-defined format
$date = DateTime::createFromFormat('d/m/Y', $dpValue);
// If the above returns false then the date
// is not formatted correctly
if ($date === false) {
header('HTTP/1.0 400 Bad Request');
die('Invalid date from datepicker!')
}
// Using the parsed date we can create a
// new one with a formatting of out choosing
$forSQL = $date->format('Y-m-d');
// ...