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

JSP页面datetime-local控件无法回显数据库时间值求助

解决datetime-local控件无法回显日期值的问题

问题核心是<input type="datetime-local">对value的格式有严格要求,必须是YYYY-MM-DDTHH:mm:ss的ISO 8601标准格式,你当前的20-12-2022T17:23:01是DD-MM-YYYY的顺序,控件根本识别不了,不是只替换空格成T就够的。

解决步骤

  1. 在JSP中转换日期格式
    你需要先解析数据库返回的dd-MM-yyyy HH:mm:ss格式字符串,再格式化为控件要求的yyyy-MM-dd'T'HH:mm:ss格式。推荐用Java 8+的时间API(线程安全),代码示例:
<%
// 从数据库获取的原始日期字符串
String rawDateTime = myDataList.get(3).toString();
// 匹配数据库返回格式的解析器
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
// 解析为LocalDateTime对象
LocalDateTime dateTime = LocalDateTime.parse(rawDateTime, inputFormatter);
// 生成datetime-local要求格式的格式化器
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
// 转换为目标格式字符串
String formattedDateTime = dateTime.format(outputFormatter);
%>
  1. 修改input控件的value属性
    把原来直接输出的原始值替换成格式化后的字符串:
<input 
type="datetime-local" 
id="dtid" 
name="frmDt" 
value="<%= formattedDateTime %>"   />

额外注意

  • 如果项目仍在使用Java 7及以下,可以用SimpleDateFormat,但要注意它是非线程安全的,需在局部代码块内创建实例:
<%
String rawDateTime = myDataList.get(3).toString();
SimpleDateFormat inputFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date date = inputFormat.parse(rawDateTime);
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String formattedDateTime = outputFormat.format(date);
%>
  • 建议添加异常处理,避免因日期格式错误导致页面报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:55:24