我正在尝试将我在jsp中获得的java.util.Date对象格式化为"yyyy-MM-dd hh:mm:ss"的模式,但它仍然以不同的(可能是默认的)格式打印它.
我使用此声明包含了taglibrary -
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
Run Code Online (Sandbox Code Playgroud)
我使用以下代码行将其打印为表格单元格中的值 -
<td><fmt:formatDate pattern="yyyy-MM-dd hh:mm:ss" value="${proposal.creationDate}"/></td>
Run Code Online (Sandbox Code Playgroud)
但它仍然打印如下 -
Wed May 24 00:00:00 IST 3911
Run Code Online (Sandbox Code Playgroud)
有人可以建议,我可能做错了什么.
evi*_*tto 13
我有同样的问题.在尝试格式化日期之前,我可以通过设置区域设置来修复它:
<fmt:setLocale value="en_US" />
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd" />
Run Code Online (Sandbox Code Playgroud)
这解决了问题,但我不知道为什么.
${proposal.creationDate} 当实际返回 aString而不是 fullworthy时,就会发生这种情况Date。相应地修复它。
private Date creationDate;
public Date getCreationDate() {
return creationDate;
}
Run Code Online (Sandbox Code Playgroud)
如果由于某些不明显的原因您确实无法更改类型,那么您需要首先通过 来解析它<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" />
Run Code Online (Sandbox Code Playgroud)
但这很简单。
与问题无关,小时数应由HHnot表示hh。另请参见SimpleDateFormatjavadoc。打印输出中的年份 3911 而不是 2011 也表明您使用了已弃用的 Date构造函数/方法来创建它。