You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP datetime值设置Bootstrap datetimepicker默认值及处理入库转换错误

问题根因

  1. 日期格式识别错误:PHP的strtotime函数默认将/分隔的日期识别为月/日/年格式,你提交的30/12/2021中30被判定为无效月份,返回布尔值false,传入date函数后就会输出Unix时间戳起点1970-01-01 00:00:00
  2. 日期选择器默认值赋值失败:你原有JS代码中的PHP代码没有加echo,无法把数据库读取的日期输出到JS配置中,同时部分版本Bootstrap datetimepicker的默认值配置参数为defaultDate而非date

修复方案

1. PHP提交日期存入数据库的转换逻辑

不要直接用strtotime自动识别格式,手动指定输入格式做解析:

$input = $_POST['lot_datetime'];
// 手动指定输入格式为 日/月/年 时:分 上午/下午
$dateObj = DateTime::createFromFormat('d/m/Y h:i A', $input);
if ($dateObj) {
    // 转换为数据库兼容的datetime格式
    $saveDatetime = $dateObj->format('Y-m-d H:i:s');
    echo $saveDatetime;
} else {
    // 自定义日期格式错误时的处理逻辑
    $saveDatetime = date('Y-m-d H:i:s'); // 或者抛出异常提示
}

2. Bootstrap datetimepicker默认值配置

修正PHP输出逻辑,同时指定选择器的格式和提交格式保持一致:

$(function () {
  $('#datetimepickerDemo').datetimepicker({
    // 指定选择器的显示和输出格式,和提交格式统一
    format: 'DD/MM/YYYY hh:mm A',
    // 用defaultDate参数传默认值,PHP加echo输出日期
    defaultDate: '<?php echo date('d/m/Y h:i A', strtotime($lottery['lotdatetime'])); ?>'
  });
});

注意事项

如果你的datetimepicker插件版本格式占位符有差异,调整format参数的占位符和PHP输出的格式一一对应即可。

内容的提问来源于stack exchange,提问作者mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:24:06