JSTL formatDate始终将模式“MMM”格式化为“Jan”

时间:2011-02-25 10:22:39

标签: java date jsp format jstl

在foreach循环中,我按如下方式设置curMonthcurDisplayedMonth

<fmt:formatDate value="${curDate}" type="date" pattern="m" var="curMonth" />
<fmt:formatDate value="${curDate}" type="date" pattern="MMM" var="curDisplayedMonth" />

并将其作为

列在下拉列表中
<option value="<c:out value="${curMonth}"/>" <c:if test="${selectedMonth == curMonth}">selected</c:if>>
<c:out value="${curDisplayedMonth}"/>
</option>

但它格式化为Jan:


enter image description here


并且选项中的值是正确的:


enter image description here

2 个答案:

答案 0 :(得分:0)

typepattern属性是互斥的。你使用其中一个,但不能两个都使用。

type属性只是指定某些常见模式的便捷方式。

如果您想使用pattern,则应删除type="date"属性。

答案 1 :(得分:0)

您需要更正pattern选项。要使用JSTL formatDate显示月份,请使用以下选项:

<%-- Displays numeric month (ex: 1) --%>
<fmt:formatDate value="${curDate}" pattern="M" />

<%-- Displays  two-digit numeric month (ex: 01) --%>
<fmt:formatDate value="${curDate}" pattern="MM" />

<%-- Displays  the month abbreviation (ex: Jan) --%>
<fmt:formatDate value="${curDate}" pattern="MMM" />

<%-- Displays  the full month name (ex: January) --%>
<fmt:formatDate value="${curDate}" pattern="MMMM" />

另外,在上面的示例中:

<fmt:formatDate value="${curDate}" type="date" pattern="m" var="curMonth" />

pattern="m"代表分钟。