我有个问题。我在jsp中使用以下内容:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:formatDate type="date" pattern="dd.MM.YYYY" value="${booking.startDate}"/>
日期为 : 2014-12-29或表示为 long 1419807600000,显示为29.12.2015,这是错误的。
我发现: formatDateGregoriancalendar#getWeekYear()
在以下代码之后在内部使用:
if (field == CalendarBuilder.WEEK_YEAR) {
if (calendar.isWeekDateSupported()) {
value = calendar.getWeekYear();
}...
里面的这段代码GregorianCalendar#getWeekYear()
:
if (year > gregorianCutoverYear + 1) {
int weekOfYear = internalGet(WEEK_OF_YEAR);
if (internalGet(MONTH) == JANUARY) {
if (weekOfYear >= 52) {
--year;
}
} else {
if (weekOfYear == 1) {
++year;
}
}
return year;
}
显然,问题出在这里:
if (weekOfYear == 1) {
++year;
}
所以,一年中的第 1 周是 1,因为29.12.2014实际上是 2015 年的第一周。我为此使用德语语言环境,这意味着一年中的第一周是第一周有 4 天或更多天新年。
尽管如此,我的格式还是不能正常工作。有什么建议么?
非常感谢。