javaCalendar类对

92 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情

让我们一起来看一下Calendar日期类吧。Calendar为第二代时间类,出现于JDK1.1。Calendar是一个抽象类,并且构造器是private。可以通过getInstance()来获取实例。Calendar没有提供对应的格式化的类,因此需要程序员自己组合来输出。


Calendar类对象字段类型

Calendar有很多的字段类型提供给程序员,我把它们整理到下面的表格里了。

常量描述
Calendar.YEAR年份
Calendar.MONTH月份
Calendar.DATE日期
Calendar.DAY_OF_MONTH日期
Calendar.HOUR12小时制的小时
Calendar.HOUR_OF_DAY24小时制的小时
Calendar.MINUTE分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK星期几

当我们想获得Calendar的所有字段时只要调用getInstance()就可以,代码如下。

        Calendar calendar =Calendar.getInstance();
        System.out.println(calendar);

效果 image-20220603225025533 当然,想获取单个Calendar的单个字段也是可以的,代码如下。

        Calendar calendar =Calendar.getInstance();
        System.out.println("年:"+ calendar.get(Calendar.YEAR));
        //(calendar.get(Calendar.MONTH)+1)//这里加1是因为返回月的时候按照0开始编号
        System.out.println("月:"+ (calendar.get(Calendar.MONTH)+1));
        System.out.println("日:"+ calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println("小时:"+ calendar.get(Calendar.HOUR));
        System.out.println("分钟:"+ calendar.get(Calendar.MINUTE));
        System.out.println("秒:"+ calendar.get(Calendar.SECOND));
	// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
	System.out.println("星期:"+ calendar.get(Calendar.DAY_OF_WEEK));

效果

年:2022
月:6
日:3
小时:11
分钟:3
秒:31
星期:7

有时我们不想获取当前时间,而是想要自己定一个时间。那Calendar类可以实现吗?答案是肯定的,代码如下。

	Calendar calendar = Calendar.getInstance();
	//public final void set(int year,int month,int date)
	calendar.set(2009, 6, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
	System.out.println("年:" + calendar.get(Calendar.YEAR));
        System.out.println("月:" + calendar.get(Calendar.MONTH));
        System.out.println("日:" + calendar.get(Calendar.DAY_OF_MONTH));

效果

年:2009
月:6
日:12

利用字段类型设置。如果只设定某个字段,则可以使用如下set方法:

	Calendar calendar = Calendar.getInstance();
	//把 calendar对象代表的年份设置为2008年,其他的所有数值会被重新计算
	//public void set(int field,int value)
	calendar.set(Calendar.YEAR,2008);
	//把 calendar对象代表的月份设置为2号,其它所有的数值会被重新计算
	calendar.set(Calendar.MONTH,2);
	//把 calendar对象代表的日期设置为10号,其它所有的数值会被重新计算
	calendar.set(Calendar.DATE,10);
	System.out.println("年:" + calendar.get(Calendar.YEAR));
        System.out.println("月:" +( calendar.get(Calendar.MONTH)+1));
        System.out.println("日:" + calendar.get(Calendar.DAY_OF_MONTH));

效果

年:2008
月:3
日:10

Calendar类非常的灵活,就在于它可以获取单个字符。在把单个的字符组成我们想要得到的任何形式,代码如下。

Calendar calendar =Calendar.getInstance();
ystem.out.println(+calendar.get(Calendar.YEAR) + "年"+ (calendar.get(Calendar.MONTH)+1) +  "月"+ calendar.get(Calendar.DAY_OF_MONTH)+"日");

效果

202263