gpt4 book ai didi

java - JSTL formatDate在JSP中显示year + 1

转载 作者:行者123 更新时间:2023-11-30 08:21:16 25 4
gpt4 key购买 nike

我有一个问题。我在 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 天或更多天的星期。

不过,我的格式无法正常工作。有什么建议吗?

非常感谢。

最佳答案

YYYY 是周年,而不是年。 yyyy 是年份。参见 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

关于java - JSTL formatDate在JSP中显示year + 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25362956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com