小编典典

date()返回1970-01-01

sql

我正在使用具有以下格式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。有什么想法我做错了吗?非常感谢你的帮助。


阅读 157

收藏
2021-04-07

共1个答案

小编典典

当您1970-01-01从那里回来时date(),意味着时间戳不正确。该日期是UNIX时代

当涉及到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');

// ...
2021-04-07