3

我正在尝试将日历值设置为其基数(0),以便稍后将其与另一个值进行比较。当我尝试打印结果时,我在使用 SimpareDateFormat 时得到了月份值。有什么想法吗?我做得对吗?

SimpleDateFormat DataDateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat DataDateFormatMonth = new SimpleDateFormat("MM");

Calendar cld = Calendar.getInstance();
cld.set(1, 1, 1);

System.out.println(DataDateFormat.format(cld.getTime()));       //  ->  0001-02-01
System.out.println(DataDateFormatMonth.format(cld.getTime()));  //  ->  02      !!!!
System.out.println(cld.get(Calendar.MONTH));                    //  ->  1
4

4 回答 4

4

Calendar API 中的月份间隔为 0 到 11。

JAN--->0
.......
DEC--->11

Calendar.MONTH将返回一个int 值 (2),在您的情况下是 MM 的值。即Calander.MONTH 是一个常数

分解:

System.out.println(cld.get(Calendar.MONTH));                    //  ->  1
Calaender.MONTH--- 2
cld.get(2); will get the value at the given calendar field. (in this case 2, your month field whihc is 1) 

例如将您的最后一个打印语句更改为

 Calendar cld = Calendar.getInstance();
 cld.set(10, 10, 1100); (format is MM,dd,YYYY)
 System.out.println(cld.get(Calendar.YEAR));             

输出将为 10(它将以格式返回月份值),因为Calendar.YEAR 将返回 1

于 2012-11-12T09:45:31.580 回答
3

月份以 0 开头calander。一月-> 0,二月-> 1 ...十二月-> 11

于 2012-11-12T09:45:10.303 回答
1

来自set() 参数的API :

  • year - 用于设置 YEAR 时间字段的值。
  • 月 - 用于设置 MONTH 时间字段的值。月份值从 0 开始。例如,0 表示一月。
  • date - 用于设置 DATE 时间字段的值。
于 2012-11-12T09:50:18.760 回答
0

这就是您想要获得的内容,因为new SimpleDateFormat("MM")它将格式化输入日期并仅返回MM月份的值。

于 2012-11-12T09:45:05.450 回答