calendar.add返回奇怪的日期

时间:2014-05-12 17:35:44

标签: android calendar

我试图通过使用:

简单地在当前日期添加一个n号码
Calendar calendar = Calendar.getInstance(); // today 12.05.2014
calendar.add(Calendar.DAY_OF_MONTH, 2); // expected 14.05.2014 --> returns 01.06.2014

不幸的是它没有返回预期的日期。

使用calendar.add(Calendar.DAY_OF_MONTH, 0);返回当前日期。现在我完全糊涂了。我监督过什么吗?

这是我的日志:

java.util.GregorianCalendar[time=1401469591003,areFieldsSet=true,lenient=true,
zone=Europe/Berlin,firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,

**YEAR=2014,**
**MONTH=4,**

WEEK_OF_YEAR=22,
WEEK_OF_MONTH=5,

**DAY_OF_MONTH=30,** // I would initially expect 12
DAY_OF_YEAR=150,

DAY_OF_WEEK=6,

DAY_OF_WEEK_IN_MONTH=5,
AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=6,SECOND=31,MILLISECOND=3,ZONE_OFFSET=3600000,DST_OFFSET=3600000]

添加2后

java.util.GregorianCalendar[time=1401642391003,areFieldsSet=true,lenient=true,
zone=Europe/Berlin,firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,

**YEAR=2014,**
**MONTH=5,**

WEEK_OF_YEAR=22,
WEEK_OF_MONTH=1,

**DAY_OF_MONTH=1,**
DAY_OF_YEAR=152,

DAY_OF_WEEK=1,

DAY_OF_WEEK_IN_MONTH=1,
AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=6,SECOND=31,MILLISECOND=3,ZONE_OFFSET=3600000,DST_OFFSET=3600000]

更新

发现了错误的错误: 当我通过以下方式创建日历对象时:

Calendar calendar = Calendar.getInstance(); 

我想在for语句中多次添加(add())一个新日期。

        Calendar calendar = Calendar.getInstance();
    for (int i = 0; i < 100; i++) {

        calendar.add(Calendar.DATE, i);

在这个陈述中,我添加了一个新的日期(calendar.add(i)),但是没有用。在for语句中移动构造函数后,所有计算现在都是正确的。

        for (int i = 0; i < 100; i++) {

        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, i);

我真的不明白这种行为 - 但它确实有用。

1 个答案:

答案 0 :(得分:0)

尝试使用添加(Calendar.DATE,1);