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

HTML date输入在PHP POST中返回错误日期的问题排查

问题原因分析

你的表单本身没有问题,问题出在PHP处理逻辑的错误:

  • HTML的date类型输入提交的是标准YYYY-MM-DD格式字符串,你看到的“随机数字”是strtotime()返回的Unix时间戳(从1970年1月1日至今的秒数),并非原始输入的问题。
  • 你的代码逻辑完全搞反了:只要strtotime()能成功将提交的日期转为有效时间戳,就把变量强制设为当日日期,这就导致无论用户选什么日期,最终输出都是当天。
修正后的PHP代码

如果要直接使用用户提交的有效日期,无需多余转换:

// 直接获取提交的日期,同时做非空/有效性判断
$startdatum = isset($_POST['startdatum']) && strtotime($_POST['startdatum']) !== false 
    ? $_POST['startdatum'] 
    : date('Y-m-d');

$einddatum = isset($_POST['einddatum']) && strtotime($_POST['einddatum']) !== false 
    ? $_POST['einddatum'] 
    : date('Y-m-d');

如果确实需要时间戳做后续处理,应该保留时间戳并按需转换:

// 获取时间戳,无效时用当日时间戳
$startTimestamp = isset($_POST['startdatum']) ? strtotime($_POST['startdatum']) : false;
$startdatum = $startTimestamp !== false ? date('Y-m-d', $startTimestamp) : date('Y-m-d');

$eindTimestamp = isset($_POST['einddatum']) ? strtotime($_POST['einddatum']) : false;
$einddatum = $eindTimestamp !== false ? date('Y-m-d', $eindTimestamp) : date('Y-m-d');
额外注意事项
  • 表单里的einddatum标签后多了一个冗余的</div>,建议删除,避免HTML结构错误。
  • 处理用户输入时,必须做非空判断和有效性验证,防止$_POST变量不存在导致报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:57:37