java-calendar常⽤⽅法和注意事项
介绍
Calendar是java提供的⼀个可以操作⽇历的抽象类。默认实现是GregorianCalendar。可以和Date结合使⽤,⽤来获取当前时间是星期⼏、⽉份、⼀年第多少天等操作。
后⾯介绍也会介绍⼏个常⽤场景的⽅法
字段介绍
这⾥介绍Calendar的常⽤字段。YEAR、MONTH等。直接通过代码我们可以更直观知道意思。
Calendar calendar = Instance();
calendar.setTime(getDate("2020-06-21 16:33:36"));
System.out.Time()); //Sun Jun 21 16:33:36 CST 2020
System.out.println("YEAR:" + (Calendar.YEAR));//2020
System.out.println("MONTH:" + (Calendar.MONTH));//5(⽉份从0开始。)
System.out.println("DAY_OF_YEAR:" + (Calendar.DAY_OF_YEAR));//173 ⼀年多少天
System.out.println("DAY_OF_MONTH:" + (Calendar.DAY_OF_MONTH));//21 ⼀个⽉第多少天
System.out.println("DATE:" + (Calendar.DATE)); // 指⽰当前时间为多少号(⽇历式的多少号) 21
System.out.println("DAY_OF_WEEK:" + (Calendar.DAY_OF_WEEK));//1 Calendar 默认周⽇是第⼀天, calendar.setFirstDayOfWeek( Calendar.MONDAY)即使设置了,⽤这个⽤这个⽅法获取的还是周⽇是1。
System.out.println("DAY_OF_WEEK_IN_MONTH:" + (Calendar.DAY_OF_WEEK_IN_MONTH)); //3 ⼀个⽉的第⼏周3
System.out.println("HOUR:" + (Calendar.HOUR));//4 12⼩时制
System.out.println("HOUR_OF_DAY:" + (Calendar.HOUR_OF_DAY));// 16 24⼩时制
System.out.println("MINUTE:" + (Calendar.MINUTE)); //33分
System.out.println("SECOND:" + (Calendar.SECOND)); //36秒
运⾏介绍
Sun Jun 21 16:33:36 CST 2020
get out ofYEAR:2020
MONTH:5
DAY_OF_YEAR:173
DAY_OF_MONTH:21
DATE:21
DAY_OF_WEEK:1
DAY_OF_WEEK_IN_MONTH:3
HOUR:4
HOUR_OF_DAY:16
MINUTE:33
SECOND:36
在看⼀下 2020年第⼀天的情况。
calendar.setTime(getDate("2020-01-01 11:11:11"));
System.out.println("-------2020-01-01 11:11:11-------");
// System.out.Time()); //2020-01-01 11:11:11
System.out.println("YEAR:" + (Calendar.YEAR));//2020
System.out.println("MONTH:" + (Calendar.MONTH));//0(⽉份从0开始。)
System.out.println("DAY_OF_YEAR:" + (Calendar.DAY_OF_YEAR));//1 ⼀年多少天
System.out.println("DAY_OF_MONTH:" + (Calendar.DAY_OF_MONTH));//1 ⼀个⽉第多少天
System.out.println("DATE:" + (Calendar.DATE)); // 指⽰当前时间为多少号(⽇历式的多少号) 21
System.out.println("DAY_OF_WEEK:" + (Calendar.DAY_OF_WEEK));//4 ⼀周的第四天。默认周⽇第⼀天。1.1⽇是周三
System.out.println("DAY_OF_WEEK_IN_MONTH:" + (Calendar.DAY_OF_WEEK_IN_MONTH)); //3 ⼀个⽉的第⼏周3
System.out.println("HOUR:" + (Calendar.HOUR));//4 12⼩时制
System.out.println("HOUR_OF_DAY:" + (Calendar.HOUR_OF_DAY));// 16 24⼩时制
System.out.println("MINUTE:" + (Calendar.MINUTE)); //33分
System.out.println("SECOND:" + (Calendar.SECOND)); //36秒
执⾏结果
YEAR:2020
MONTH:0
DAY_OF_YEAR:1
DAY_OF_MONTH:1
DATE:1
DAY_OF_WEEK:4
DAY_OF_WEEK_IN_MONTH:1
HOUR:11
HOUR_OF_DAY:11
MINUTE:11
SECOND:11
从上⾯结果可以看出,有3个结果的值,在我们使⽤的时候是需要注意的
1. HOUR和HOUR_OF_DAY,前者是12⼩时制,后者是24⼩时制。
2. MONTH:⼀⽉是0,即⼗⼆个⽉是从0开始编排的。
3. DAY_OF_WEEK:星期⼏。默认是从周⽇开始算第⼀天。周六是第7天。可以⽤
calendar.setFirstDayOfWeek(Calendar.MONDAY);将周⼀设置为第⼀天。
⽇历修改⽅法
add和set。
通过add主要基于Calendar⽇历的规则,为给定的⽇历字段添加或减去(负数则相减)指定的时间量。⽐如calendar.add(Calendar.MONTH,-1); 基于当前的时间往前⼀个⽉。
set⽅法则直接将⽇期设定到指定时间。⽐如基于当前设置设定时间为周⼀
set(int field ,int value)
set(int year ,int month,int date)
set(int year ,int month,int date,int hour,int minute)
set(int year ,int month,int date,int hour,int minute,int second)
获取指定时间那⼀周的周⼀和周⽇
Date date = getDate(dateStr);//周天
Calendar calendar = Instance();
//获取当前⽉份的最⼤天数 - 当前是6⽉
calendar.setFirstDayOfWeek(Calendar.MONDAY);//以周⼀为⾸⽇
calendar.setTime(date);//当前时间
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//周⼀
System.out.Time());
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//周⽇
System.out.Time());
public static Date getDate(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS);
Date date = null;
try {
date = sdf.parse(dateStr);
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
获取⽉份的最⼤天数
```
System.out.ActualMaximum(Calendar.DAY_OF_MONTH));//30
calendar.setTime(getDate("2020-05-01 11:11:11"));
System.out.ActualMaximum(Calendar.DAY_OF_MONTH));//31
```
总结
本⽂主要介绍Calendar⼀些常⽤⽅法、使⽤注意事项。若有不对之处欢迎指正。也欢迎⼤家分析更多的其他使⽤场景。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论