首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >设置日期为30/12或31/12时出现Java日历错误

设置日期为30/12或31/12时出现Java日历错误
EN

Stack Overflow用户
提问于 2019-03-11 15:50:57
回答 1查看 1.4K关注 0票数 2

我使用Calendar类来创建Date。但在我的测试用例中,当我设置日期为31/12或30/12时,year of my date是我设置的year of date + 1。Example 2018-12-29 -> 2018-12-29 -> 2018-12-30 -> 2019-12-30。我不知道为什么?我的代码:

代码语言:javascript
复制
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class MyClass {
    public static void main(String args[]) {
        calendarBug(2018, 11, 29);
        calendarBug(2018, 11, 30);
    }

    public static void calendarBug(int year, int month, int day) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month);
        calendar.set(Calendar.DAY_OF_MONTH, day);
        Date date = calendar.getTime();
        System.out.println(new SimpleDateFormat("YYYY-MM-dd").format(date));
    }
}

输出:

代码语言:javascript
复制
2018-12-29
2019-12-30
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-11 16:11:20

YYYY表示一年中的周。请改用yyyy

在javadoc中:

A week year与WEEK_OF_YEAR周期同步。第一周和最后一周(包括第一周和最后一周)之间的所有周都具有相同的周年值。因此,一周一年的第一天和最后一天可能具有不同的日历年值。

例如,1998年1月1日是星期四。如果getFirstDayOfWeek()为星期一,getMinimalDaysInFirstWeek()为4 (ISO8601标准兼容设置),则1998年的第1周从1997年12月29日开始,到1998年1月4日结束。1997日历年的最后三天的星期年份是1998。但是,如果getFirstDayOfWeek()是星期日,那么1998年的第1周从1998年1月4日开始,到1998年1月10日结束;那么1998年的前三天是1997年的第53周的一部分,它们的第1997周是1997年。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55097315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档