我正在尝试将我在jsp中获得的java.util.Date对象格式化为“yyyy-MM-dd hh:mm:ss”的模式,但它仍然以不同的方式打印它(默认情况下)可能)格式。
我使用此声明包含了taglibrary -
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
我使用以下代码行将其打印为表格单元格中的值 -
<td><fmt:formatDate pattern="yyyy-MM-dd hh:mm:ss" value="${proposal.creationDate}"/></td>
但它仍然打印如下 -
Wed May 24 00:00:00 IST 3911
有人可以建议,我可能做错了什么。
答案 0 :(得分:13)
我有同样的问题。在尝试格式化日期之前,我能够通过设置区域设置来修复它:
<fmt:setLocale value="en_US" />
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd" />
这解决了问题,但我不知道为什么。
答案 1 :(得分:1)
当${proposal.creationDate}
实际返回String
而不是完整的Date
时,就会发生这种情况。相应地修复它。
private Date creationDate;
public Date getCreationDate() {
return creationDate;
}
如果您因某些非显而易见的原因而无法更改类型,则需要先<fmt:parseDate>
解析它。
<fmt:parseDate var="realCreationDate" value="${proposal.creationDate}" pattern="EEE MMM dd HH:mm:ss z yyyy" locale="en" />
<fmt:formatDate value="${realCreationDate}" pattern="yyyy-MM-dd HH:mm:ss" />
但这很简单。
无关,小时数由HH
而不是hh
表示。另见SimpleDateFormat
javadoc。打印输出中的3911年而不是2011年也表明您已使用已弃用的 Date
构造函数/方法来创建它。