Java中Calendar对于日期的控制详解--DAY_OF_MONTH, DAY_OF_YEAR, DATE 的区别

前言

开发过程中经常遇到对时间的操作,通过具体的实验完成对时间类Calendar的基本使用方法。

创建测试代码

package action;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class TestCalendar {
    
    
	
	public static void getCaltime() {
    
    
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
		Calendar cal = Calendar.getInstance();
        System.out.println("当前系统日期:"+sdf.format(cal.getTime()));  
        
        cal.add(Calendar.DATE,1); 
        System.out.println("Calendar.DATE,1:"+sdf.format(cal.getTime()));
        cal.add(Calendar.DAY_OF_MONTH,1);  
        System.out.println("Calendar.DAY_OF_MONTH:"+sdf.format(cal.getTime()));
        cal.add(Calendar.DAY_OF_YEAR,1);  
        System.out.println("Calendar.DAY_OF_YEAR:"+sdf.format(cal.getTime()));
        
        System.out.println("这一天在是这个月的第多少天:"+cal.get(Calendar.DAY_OF_MONTH)); //用来获得这一天在是这个月的第多少天


        System.out.println("这一天在是这个年的第多少天:"+cal.get(Calendar.DAY_OF_YEAR));//用来获得这一天在是这个年的第多少天。
        
        cal.set(2018, 7, 8);// 月份是从0开始的,所以11表示12月  
        System.out.println("set方法设置年月日:"+sdf.format(cal.getTime()));  
        
        cal.add(Calendar.YEAR, -1); // 年份减1  
        System.out.println("Calendar.YEAR, -1:"+sdf.format(cal.getTime()));  
        cal.add(Calendar.YEAR, +1); // 年份加1  
        System.out.println("Calendar.YEAR, +1:"+sdf.format(cal.getTime()));  
        cal.add(Calendar.MONTH, -1);// 月份减1  
        System.out.println("Calendar.MONTH, -1:"+sdf.format(cal.getTime()));  
        cal.add(Calendar.DATE, -1);// 日期减1  
        System.out.println("Calendar.DATE, -1:"+sdf.format(cal.getTime()));  
        cal.set(Calendar.HOUR, 15);//设置时为  15点
        System.out.println("Calendar.HOUR, 15,“时间从0点开始”:"+sdf.format(cal.getTime()));  
        cal.set(Calendar.MINUTE, 45);//设置分为 45
        System.out.println("Calendar.MINUTE, 45:"+sdf.format(cal.getTime()));  
        cal.set(Calendar.SECOND, 30);//设置 秒为30
        System.out.println("Calendar.SECOND, 30:"+sdf.format(cal.getTime()));  
	}

	public static void main(String[] args) {
    
    
		
		getCaltime();

	}

}

代码中主要是对年月日增减以及设置具体年月日进行操作,并设置具体时分秒。

执行结果

在这里插入图片描述

结果分析

从上面的测试可以看出:
.add()方法是用来控制增减年月日的。.set()方法使用来设置特定日期的。
但是有部分实现的功能相同需要注意。

DAY_OF_MONTH, DAY_OF_YEAR, DATE 的区别

cal.add(Calendar.DATE,1); 
System.out.println("Calendar.DATE,1:"+sdf.format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH,1);  
System.out.println("Calendar.DAY_OF_MONTH:"+sdf.format(cal.getTime()));
cal.add(Calendar.DAY_OF_YEAR,1);  
System.out.println("Calendar.DAY_OF_YEAR:"+sdf.format(cal.getTime()));

执行结果都是一样的,都是对日期进行操作,如果只是使用.add()方法执行,结果都一样,因为都是将日期+1;
实际意义:无论是在月(Calendar.DAY_OF_MONTH)的日期中加1 还是年(Calendar.DAY_OF_YEAR)的日期中加1 还是日期(Calendar.DATE)本身加1,效果都一样。
但是DAY_OF_*的实际用处并不在修改日期,而是在获取具体的天数。
例如后面的测试代码:

System.out.println("这一天在是这个月的第多少天:"+cal.get(Calendar.DAY_OF_MONTH)); //用来获得这一天在是这个月的第多少天
System.out.println("这一天在是这个年的第多少天:"+cal.get(Calendar.DAY_OF_YEAR));//用来获得这一天在是这个年的第多少天。

使用.get()方法可以拿出在当前年月的具体天数。
同样,还有DAY_OF_WEEK,用来获得当前日期是一周的第几天。

猜你喜欢

转载自blog.csdn.net/jerrygaoling/article/details/110226094
今日推荐