我正在使用具有以下格式mm / dd / yyyy的jquery datepicker,但我需要它是sql数据库的yyyy-mm-dd,所以我正在使用它。
$date = date("Y-m-d",strtotime($startdate));
与以下
$query = "INSERT INTO complete_table ( name, startdate) VALUES ('$_POST[name]', '$date')";
不幸的是,无论输入什么,我都会在数据库中注册1970-01-01。有什么想法我做错了吗?非常感谢你的帮助。
当您1970-01-01从那里回来时date(),意味着时间戳不正确。该日期是UNIX时代。
1970-01-01
date()
当涉及到Javascript(在这种情况下为日期选择器)时,您应始终确保获得的实际上是您期望的结果。简单地将其传递strtotime()将导致类似您在此处遇到的问题。
strtotime()
处理日期的一种好方法是使用datetime扩展名。它有一个静态方法,DateTime::createFromFormat可让您使用任何格式解析任何日期:
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'); // ...