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

如何在PHP新建表单中让datepicker显示今日日期或为空

解决方案:修复Datepicker默认显示1970-01-01问题

问题根源

新建表单时,$start_date/$end_date可能被初始化为空字符串(而非不存在),导致isset()返回true并输出空值,jQuery UI Datepicker会将空值解析为Unix时间戳0对应的1970-01-01。另外,之前设置的defaultDate仅影响日期选择器打开时的默认选中项,不会修改输入框的初始显示值。


方案1:默认显示今日日期

修改PHP的value判断逻辑,用!empty()替代isset(),确保空字符串、0等无效值时自动填充今日日期,同时保留验证失败时的用户输入回显:

<?php
$today = date('m/d/Y');
?>

<div class="row">
    <div class="medium-12 columns">
      <label for="start_date"><strong>Start Date:</strong>
        <input type="text" class="datepicker" name="start_date" id="start_date" value="<?= !empty($start_date) ? $start_date : $today; ?>" />
      </label>
    </div>
  </div>

  <div class="row">
    <div class="medium-12 columns">
      <label for="end_date"><strong>End Date:</strong>
      <input type="text" class="datepicker" name="end_date" id="end_date" value="<?= !empty($end_date) ? $end_date : $today; ?>" />
      </label>
    </div>
  </div>

<script>
  $( function() {
    $( ".datepicker" ).datepicker({
      dateFormat: 'mm/dd/yyyy' // 与PHP输出格式保持一致,避免解析错误
    });
  });
</script>

方案2:默认保持为空(仅验证失败时回显输入)

修改PHP逻辑默认输出空字符串,同时配置Datepicker避免解析空值为1970日期:

<?php
// 无需定义$today,除非其他业务场景需要
?>

<div class="row">
    <div class="medium-12 columns">
      <label for="start_date"><strong>Start Date:</strong>
        <input type="text" class="datepicker" name="start_date" id="start_date" value="<?= isset($start_date) && !empty($start_date) ? $start_date : ''; ?>" />
      </label>
    </div>
  </div>

  <div class="row">
    <div class="medium-12 columns">
      <label for="end_date"><strong>End Date:</strong>
      <input type="text" class="datepicker" name="end_date" id="end_date" value="<?= isset($end_date) && !empty($end_date) ? $end_date : ''; ?>" />
      </label>
    </div>
  </div>

<script>
  $( function() {
    $( ".datepicker" ).datepicker({
      dateFormat: 'mm/dd/yyyy',
      defaultDate: null // 明确设置打开选择器时默认显示当前月份
    });
  });
</script>

补充说明

  • 确保新建表单时,$start_date和$end_date要么未定义,要么被设为null;如果从请求/数据库获取值,需提前过滤空字符串等无效值。
  • jQuery UI Datepicker的dateFormat必须与PHP输出的日期格式完全匹配,否则会出现日期解析异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:45:13