私は問題があります。私は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と表示されますが、これは間違っています。
私が見つけたもの: 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;
}
したがって、2014年 12 月 29 日は実際には 2015 年の最初の週であるため、年の週は 1 です。これにはドイツ語のロケールを使用します。つまり、年の最初の週は、新年。
それでも、私のフォーマットは正しく動作しません。助言がありますか?
どうもありがとう。