Java中Calendar对于日期的控制详解--DAY_OF_MONTH, DAY_OF_YEAR, DATE 的区别
程序员文章站
2022-12-07 19:41:55
文章目录前言创建测试代码执行结果结果分析前言开发过程中经常遇到对时间的操作,通过具体的实验完成对时间类Calendar的基本使用方法。创建测试代码package action;import java.text.SimpleDateFormat;import java.util.Calendar;public class TestCalendar {public static void getCaltime() {SimpleDateFormat sdf = new Simpl...
前言
开发过程中经常遇到对时间的操作,通过具体的实验完成对时间类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,用来获得当前日期是一周的第几天。
本文地址:https://blog.csdn.net/jerrygaoling/article/details/110226094