我正在使用一个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。 对我做错了什么的想法?非常感谢你的帮助。
答案 0 :(得分:2)
从1970-01-01
返回date()
时,表示时间戳不正确。那个日期是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');
// ...
答案 1 :(得分:1)
在初始化类似
的日期选择器时将dateformat放在jquery中$( "#id/.class" ).datepicker({dateFormat: 'yy-mm-dd'});
此格式将插入mysql db(在客户端完成),否则在服务器端代码上格式化。
答案 2 :(得分:-1)
$startdate
无效,因此strtotime
函数返回86400以下的任何内容(很可能为0),这是一天中的秒数。请参阅PHP文档,了解$startdate
here的正确格式。
答案 3 :(得分:-3)
它被称为时代。所以startdate
为零。