为什么日历会在未来一个月内生成日期

时间:2013-12-28 07:48:37

标签: java calendar

我想弄清楚Calendar类是如何工作的。为什么以下代码将来会产生一个月的日期:

package bondcalc;
import java.util.Calendar;
import java.util.Date;
import datefunctions.*;
import java.util.GregorianCalendar;

public static void main(String[] args) {
   Calendar cal=new GregorianCalendar();
   cal.clear();
   cal.set(2012,9,20);
   Date d1 =cal.getTime();
   System.out.printf("Date1: %s%n",d1);      
}

以下是输出结果:

Date1: Sat Oct 20 00:00:00 PDT 2012

4 个答案:

答案 0 :(得分:4)

使用为月份定义的Calendar常量:

cal.set(2012, Calendar.SEPTEMBER, 20);

Calendar的月份字段从零开始,就像数组索引一样。

答案 1 :(得分:2)

更改

cal.set(2012,9,20);

cal.set(2012,8,20);

因为月份字段根据java Calendar doc

从零开始

答案 2 :(得分:1)

documentation所述,Java月份为0索引。因此,这里的9表示10月。

答案 3 :(得分:1)

月份字段从索引= 0开始,因此0 = 1月,9 = 10月。