我有问题。我在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 或表示为 1419807600000 ,显示为 29.12.2015 ,这是错误的
我发现:formatDate在以下代码之后使用内部Gregoriancalendar#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,因为 29.12.2014 实际上是在2015年的第一周。我使用德语语言环境,这意味着一年的第一周是在新的一年中,第一周有4天或更长时间。
但是,我的格式无法正常工作。有什么建议吗?
非常感谢。
答案 0 :(得分:2)
YYYY
是一周,而不是一年。 yyyy
是一年。见http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html