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

本文通过实验深入探讨Java中Calendar类的DAY_OF_MONTH, DAY_OF_YEAR和DATE字段的区别。虽然在增加日期时它们表现相同,但DAY_OF_MONTH和DATE主要涉及月份中的日期,而DAY_OF_YEAR则关注全年中的日期。此外,DAY_OF_MONTH和DATE在设置日期时等效,而DAY_OF_YEAR更倾向于获取特定年份的天数。" 88690303,7914397,mybatis SqlMapperConfig.xml 配置解析,"['mybatis', 'XML配置', '数据库操作', '框架配置', 'Java开发']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

开发过程中经常遇到对时间的操作,通过具体的实验完成对时间类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,用来获得当前日期是一周的第几天。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值