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就够的。
解决步骤
- 在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); %>
- 修改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
相关产品推荐
相关产品推荐

