我有两个日期选择器,格式为dd / mm / YYYY。问题是,当我将它们存储到数据库时,它们会出现问题。输出是“1970-01-01”。我也使用mySQL STR_TO_DATE函数和php内置函数的日期格式...我不知道为什么我的日期不起作用。有人能告诉我为什么我的日期有错误吗?
以下是我正在使用的代码:
$datumDO=$_POST['datepicker'];
$datumOD=$_POST['datepicker1'];
$time = strtotime($datumDO);
$NewDatum = date('d/m/Y',$time);
$time = strtotime($datumOD);
$NewDatumOD = date('d/m/Y',$time);
if ($stmt = $dbConnection->prepare("INSERT INTO `cat-item` (id_cat, id_item, datumOD, datumDO) VALUES (?,?,STR_TO_DATE(?,'%d/%m/%Y'),STR_TO_DATE(?,'%d/%m/%Y'))")){
$stmt->bind_param('iiss', $category, $item, $NewDatum , $NewDatumOD;
$stmt->execute();
$stmt->close();
}
答案 0 :(得分:1)
如果您的日期选择器以dd/mm/YYYY
格式提供日期(/
作为分隔符),则您的函数输入不正确。
strtotime :
通过查看,可以消除m / d / y或d-m-y格式的日期 各个组件之间的分隔符:如果分隔符是a 斜线(/),然后假设美国m / d / y ;而如果 separator是短划线( - )或点(。),然后是欧洲d-m-y格式 假设。为避免潜在的歧义,最好使用ISO 8601 (YYYY-MM-DD)日期[source]
答案 1 :(得分:0)
$datumDO= date('Y-m-d', strtotime($_POST['datepicker']));
$datumOD= date('Y-m-d', strtotime($_POST['datepicker1']));
if ($stmt = $dbConnection->prepare("INSERT INTO `cat-item` (id_cat, id_item, datumOD, datumDO) VALUES (?,?,?,?)")){
$stmt->bind_param('iiss', $category, $item, $datumDO, $datumOD;
$stmt->execute();
$stmt->close();
}
试试这个......希望这有帮助