我正在使用this tutorial ,但我根据我的需要稍微修改了一些字段,没什么特别的,只是:
$('.txtDate').datepicker({
changeMonth: true,
changeYear: true,
showOn: 'focus',
showAnim: "fadeIn",
dateFormat: 'dd/mm/yy',
autoSize: true,
yearRange: '1900:+0',
onSelect: function (dateString, txtDate) {
ValidateDOB(dateString, txtDate.id);
}
});
这些是 html 输入(我有多个):
<label class="mr-3" for="c1_dob">Birthday <span>*</span></label>
<input class="txtDate" type="text" id="c1_dob" autocomplete="off" name="c1_dob" onkeydown="return false;" required/>
问题是,有时将日期保存到数据库中为 1970-01-01。这种情况会在哪个输入端发生也不清楚。纯随机。 有人可以指出我,为什么会发生这种情况吗?如果您需要查看更多代码,请随时询问。
最佳答案
来自您的评论:
So that means that ´date('Y-m-d', strtotime($next_array[7]))´ does not work properly.
您将 strtotime()
与诸如 dd/mm/yyyy
之类的日期格式一起使用...但它期望 mm/dd/yyyy
。因此,日和月在解析过程中是“颠倒”的。
请参阅 PHP 文档 strtotime()和 Supported Date and Time Formats
您的 PHP 修复将反转它们:
<?php
$dateSplit = explode("/", $next_array[7]); // "16/03/1983";
$datefixed = $dateSplit[1]."/".$dateSplit[0]."/".$dateSplit[2];
$iso_date = date("Y-m-d", strtotime($datefixed));
echo $iso_date; // Outputs "1983-03-16"
?>
关于javascript - Datepicker 检查用户的年龄,有时会在数据库中保存错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66601235/