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

如何让input type="date"显示数据库中的d-m-Y格式日期

解决input type="date"无法正确显示数据库日期的问题

问题核心:HTML的input type="date"要求value属性必须是ISO 8601格式(YYYY-MM-DD),而你数据库里的日期是d-m-Y(比如09-03-2022),直接赋值会导致浏览器无法识别,因此显示默认占位符。

你之前的代码无效原因:

  • 把date()函数调用直接写在字符串里,没有实际执行,而是被当成文本输出
  • 未正确解析数据库的d-m-Y格式日期,直接传递字符串给date()的话,参数不是合法时间戳

正确处理步骤

  1. 取出数据库中d-m-Y格式的日期字符串
  2. 用PHP的DateTime::createFromFormat方法,按数据库格式解析成日期对象(避免strtotime的歧义问题)
  3. 将日期对象转换成Y-m-d格式,赋值给input的value属性

代码示例

// 从数据库获取日期,注意数组键名需加引号
$db_date = $res['date'];

// 按数据库的d-m-Y格式解析日期
$date_obj = DateTime::createFromFormat('d-m-Y', $db_date);

// 转换成input要求的YYYY-MM-DD格式
$input_date = $date_obj->format('Y-m-d');

// 生成input元素
$date = "<input type=\"date\" id=\"date\" name=\"date\" value=\"{$input_date}\">";

补充说明

  • 浏览器会根据用户系统的区域设置,将YYYY-MM-DD的value显示为对应本地格式(比如dd/mm/yyyy或mm/dd/yyyy),但底层的value始终是ISO格式,表单提交时也会以此格式发送。
  • 若使用strtotime($db_date),部分场景下能解析d-m-Y格式,但存在歧义(比如03-09-2022可能被识别为3月9日或9月3日),因此用createFromFormat指定格式更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:01:52