Java 中Calendar类

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/fengdong1996/article/details/97105672

一、Calendar类静态常量

ERA 纪元 值为:0、1。0表示BC(“before Christ”,即公元前),1表示AD(拉丁语“Anno Domini”,即公元)
YEAR 当前日期对应的年份  
MONTH 当前日期对应的月份 值从0开始,范围0-11。注意:从0开始
WEEK_OF_YEAR 属于当年第几周 值从1开始,范围1-52
WEEK_OF_MONTH 属于当月第几周(自然周) 值为1-6。1号是星期几这周就从星期几开始,第一周可能不完整。如果一号是星期六,那么第一周只有周六这一天,周日就变成第二周。注意:一周是从周日开始,周六结束的。
DAY_OF_WEEK_IN_MONTH 属于当月第几周(七天为一周) 值为1-5。每月1号到7号是第一周,七天一周依次类推。
     
DAY_OF_YEAR 在当年属于第几天 值为1-366
DAY_OF_MONTH 在当月属于第几天 值从1开始,范围1-31
DATE 在当月属于第几天 同上DAY_OF_MONTH
DAY_OF_WEEK 当周属于第几天

即星期几

注意:星期日为一周的第一天,周六是最后一天。

     
AM_PM 上下午 可以是AM 或 PM。AM为0,表示上午;PM为1,表示下午
HOUR 一天中的第几小时

用于 12 小时制时钟,范围0 - 11

HOUR_OF_DAY 一天中的第几小时

用于 24 小时制时钟,范围0-23

MINUTE 一小时中的第几分钟 值为0-60
SECOND 一分钟中的第几秒 值为0-60
MILLISECOND 一秒中的第几毫秒 值为0-999
     
ZONE_OFFSET 距 GMT 的大致偏移量 毫秒为单位
DST_OFFSET 夏令时的偏移量 毫秒为单位

测试验证:

public static void main(String[] args) {
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
        cal.set(2019,6,7, 23, 59, 59);
        System.out.println(new SimpleDateFormat().format(cal.getTime()));

        System.out.println("纪元:" + cal.get(Calendar.ERA));
        System.out.println("年:" + cal.get(Calendar.YEAR));
        System.out.println("月:" + (cal.get(Calendar.MONTH)));
        System.out.println("当年的第几周:" + (cal.get(Calendar.WEEK_OF_YEAR)));
        System.out.println("当月的第几周(对日期):" + (cal.get(Calendar.WEEK_OF_MONTH)));
        System.out.println("当月的第几周:" + (cal.get(Calendar.DAY_OF_WEEK_IN_MONTH)));
        System.out.println("当年的第几日:" + cal.get(Calendar.DAY_OF_YEAR));
        System.out.println("几号:" + cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("星期:" + cal.get(Calendar.DAY_OF_WEEK));
        System.out.println("几号:" + cal.get(Calendar.DATE));
        System.out.println("上下午:" + cal.get(Calendar.AM_PM));
        System.out.println("时12:" + cal.get(Calendar.HOUR));
        System.out.println("时24:" + cal.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:" + cal.get(Calendar.MINUTE));
        System.out.println("秒:" + cal.get(Calendar.SECOND));
        System.out.println("毫秒:" + cal.get(Calendar.MILLISECOND));
    }  

19-7-7 下午11:59
纪元:1
年:2019
月:6
当年的第几周:28
当月的第几周:2
当月的第几周:1
当年的第几日:188
几号:7
星期:1
几号:7
上下午:1
时12:11
时24:23
分:59
秒:59
毫秒:941

注意:

扫描二维码关注公众号,回复: 7199495 查看本文章

1、MONTH 月是0-11之间,使用月时需要加一,cal.set(2019,6,7, 23, 59, 59)第二个参数6其实是在设置7月。

2、DAY_OF_WEEK 一周的开始是从周日开始,周六结束。1代表是周日,2才是周一。

3、2019-7的第一周是从星期一开始,所以WEEK_OF_MONTH计算的第一周是1~6号第一周只有六天;而DAY_OF_WEEK_IN_MONTH计算的第一周永远是1~7号。

二、Calendar的方法

get(int field) 

获取指定参数的值。

如:获取月cal.get(Calendar.MONTH)

set(int field, int value) 

设置指定参数的值。

如:设置月为七月:cal.set(Calendar.MONTH, 6);

注意:月是从0开始

add(int field, int value) 

给指定参数累加值,值可以是正数或负数。

如:给月加一 cal.add(Calendar.MONTH, 1)

注意:如果当前月已经是11(即12月),月加一后就会变成下一年一月,即上一位会进一。

roll(int field, int value)  同上,但是这个方法给时间某一项累加后不会造成上一位的变化,给月加减不会造成年的变化。
clear(int field)  清除某一项的值,将其值置为最小。
isSet(int field)  如用clear清除后,会返回false.
getMaximum(int field)  获取最大值,如参数是日,不管是几月,获取的日最大值都是31。
getActualMaximum(int field) 获取实际最大值,如参数是日,当前时间是7月,日的最大值是31,六月的最大值是30。
getMinimum(int field)  获取最小值。
getActualMinimum(int field) 获取最小值,同上。

方法测试:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
		
//1、set方法的使用
cal.set(2019, 05, 31); //月取值是0-11。05其实是在设置六月
System.out.println(sdf.format(cal.getTime()));  //设置为6月31日,输出:2019-07-01
		
cal.set(2019, 05, -1); 
System.out.println(sdf.format(cal.getTime()));//设置日为-1,输出:2019-05-30
		
		
//2、add方法、roll方法
cal.set(2019, 05, 30);  //6.30
cal.add(Calendar.DATE,1);//日加一
System.out.println(sdf.format(cal.getTime()));//add会造成上一位值的变化,输出:2019-07-01
		
cal.set(2019, 05, 30);  //6.30
cal.roll(Calendar.DATE,1); //日加一
System.out.println(sdf.format(cal.getTime()));//roll只会改变指定项的变化,时间从新回到一号,月不变。
														//输出:2019-06-01
		
//3、getMaximum、getActualMaximum
cal.set(2019, 05, 01);  //6.30
System.out.println(cal.getMaximum(Calendar.DATE));  //输出:31
System.out.println(cal.getActualMaximum(Calendar.DATE)); //输出:30。六月实际只有30天
		
//4、getMinimum、getActualMinimum
System.out.println(cal.getMinimum(Calendar.DATE));//输出:1
System.out.println(cal.getActualMinimum(Calendar.DATE));//输出:1

参考于:https://blog.csdn.net/cqx13763055264/article/details/81088635

猜你喜欢

转载自blog.csdn.net/fengdong1996/article/details/97105672