1.问题:
为什么我的DAT_OF_MONTH输出来的不是当前月份,而是5?
2.源代码:
public class TestDemo3_AutoUpClassDayToMonth {
public static void main(String[] args) {
/*全局变量*/
Date currentDateTime=new Date();/*获取当前时间*/
Calendar calendar = Calendar.getInstance();/*建立日历空日历*/
calendar.setTime(currentDateTime);/*空日历中导入当前时间*/
calendar.add(Calendar.DAY_OF_MONTH,-1);/*取天数为前一天*/
calendar.set(Calendar.HOUR_OF_DAY,23);/*设置时间为23点*/
calendar.set(Calendar.MINUTE,59);/*设置分钟为59分*/
calendar.set(Calendar.SECOND,0);/*设置秒数为0秒*/
calendar.set(Calendar.MILLISECOND,0);/*设置毫秒为0毫秒*/
System.out.println(currentDateTime);/*打印当前时间*/
for (int i=0;i<30;i++){/*从前一天遍历到最近30天*/
int monthDemo=Calendar.DAY_OF_MONTH;/*获取当月天数*/
System.out.println("最近30天:"+monthDemo);/*打印最近30天的天数*/
calendar.add(Calendar.DAY_OF_MONTH,-1);/*每个月的天数往前减1*/
}
}
}
3.截图:
4.总结:
为什么当前时间是2017年6月19日13:25:23,但是最近30天却都是5?
因为:
正确的写法应该是这样的:
输入的结果为:
问题的所在是:
Calendar.DAY_OF_MONTH是一个常量,static;
必须得用calendar.get(Calendar.DAT_OF_MONTH),才能获取正确的值;