Java小白入门200例58之日期Calendar类详解

Posted 编程界明世隐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java小白入门200例58之日期Calendar类详解相关的知识,希望对你有一定的参考价值。

作者简介

作者名:编程界明世隐
简介:CSDN博客专家,从事软件开发多年,精通Java、javascript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞!

引言

很多Java初学者问我,新手明明很用心、很努力学习的Java知识,转头又忘记了,很让人犯愁,小白如何能够快速成长、成为大牛呢?
其实要成为大神的技巧只有一个:“多学多练”,于是明哥就整理了比较典型的练习实例,通过练习能够快速提升编码技巧和熟练度,让你在成为大佬的路上一去不复返(切记要亲手练习哦)!

导航

✪ Java小白入门200例系列目录索引
◄上一篇  57.日期Date类详解
►下一篇  59.用Calendar实现日历的打印

Calendar类介绍

Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

创建Calendar 对象

Calendar c = Calendar.getInstance();

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类的常用方法

方法描述
void add(int field, int amount)根据日历的规则,为给定的日历字段 field 添加或减去指定的时间量 amount
boolean after(Object when)判断此 Calendar 表示的时间是否在指定时间 when 之后,并返回判断结果
boolean before(Object when)判断此 Calendar 表示的时间是否在指定时间 when 之前,并返回判断结果
void clear()清空 Calendar 中的日期时间值
int compareTo(Calendar anotherCalendar)比较两个 Calendar 对象表示的时间值(从格林威治时间 1970 年 01 月 01 日00 时 00 分 00 秒至现在的毫秒偏移量),大则返回 1,小则返回 -1,相等返回 0
int get(int field)返回指定日历字段的值
int getActualMaximum(int field)返回指定日历字段可能拥有的最大值
int getActualMinimum(int field)返回指定日历字段可能拥有的最小值
int getFirstDayOfWeek()获取一星期的第一天。根据不同的国家地区,返回不同的值
static Calendar getInstance()使用默认时区和语言坏境获得一个日历
static Calendar getInstance(TimeZone zone)使用指定时区和默认语言环境获得一个日历
static Calendar getInstance(TimeZone zone,Locale aLocale)使用指定时区和语言环境获得一个日历
Date getTime()返回一个表示此 Calendar 时间值(从格林威治时间 1970 年 01 月 01 日 00 时00 分 00 秒至现在的毫秒偏移量)的 Date 对象
long getTimeInMillis()返回此 Calendar 的时间值,以毫秒为单位
void set(int field, int value)为指定的日历字段设置给定值
void set(int year, int month, int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
void set(int year, int month, int date, int hourOfDay,int minute, int second)设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、 MINUTE 和 SECOND 的值
void setFirstDayOfWeek(int value)设置一星期的第一天是哪一天
void setTimeInMillis(long millis)用给定的 long 值设置此 Calendar 的当前时间值

实例1

获取当前时间

package demo.demo58;

import java.util.Calendar;

public class Calendar1 {

	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar.getTime());
	}
}

运行结果:

Sun Sep 12 15:24:48 CST 2021

实例2

获得年、月、日、时、分、秒

package demo.demo58;

import java.util.Calendar;

public class Calendar2 {

	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		//年
		System.out.println(calendar.get(Calendar.YEAR));
		//月
		System.out.println(calendar.get(Calendar.MONTH+1));
		//日
		System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
		//时
		System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
		//分钟
		System.out.println(calendar.get(Calendar.MINUTE));
		//秒
		System.out.println(calendar.get(Calendar.SECOND));
		//毫秒
		System.out.println(calendar.get(Calendar.MILLISECOND));
	}
}

运行结果:

2021
38
12
15
27
56
345

实例3

set设置一个日期,set(int year,int month,int date),注意月份的设置是 +1 的哦

package demo.demo58;

import java.util.Calendar;

public class Calendar3 {

	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar.getTime());
		//设置为2022年9月18,注意月份的设置是 +1 的哦
		calendar.set(2022, 8, 18);
		System.out.println(calendar.getTime());
	}
}

运行结果:

Sun Sep 12 15:37:53 CST 2021
Sun Sep 18 15:37:53 CST 2022

实例4

单独设置某个值,比如年、月、日 public void set(int field,int value)

package demo.demo58;

import java.util.Calendar;

public class Calendar4 {

	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar.getTime());
		//设置为2022年
		calendar.set(Calendar.YEAR,2022);
		System.out.println(calendar.getTime());
		//设置为10月,设置的时候,月份是在设置的值基础上+1的哦
		calendar.set(Calendar.MONTH,9);
		System.out.println(calendar.getTime());
		//设置为18日
		calendar.set(Calendar.DAY_OF_MONTH,18);
		System.out.println(calendar.getTime());
	}
}

运行结果:

Sun Sep 12 15:46:14 CST 2021
Mon Sep 12 15:46:14 CST 2022
Wed Oct 12 15:46:14 CST 2022
Tue Oct 18 15:46:14 CST 2022

实例5

add 设置,对相应的字段进行加减操作

package demo.demo58;

import java.util.Calendar;

public class Calendar5 {

	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar.getTime());
		//设置为2022年(1)
		calendar.add(Calendar.YEAR,1);
		System.out.println(calendar.get(Calendar.YEAR));
		//设置回2021年(-1)
		calendar.add(Calendar.YEAR,-1);
		System.out.println(calendar.get(Calendar.YEAR));
		
		//设置为10月,设置的时候,月份是在设置的值基础上+1的哦
		calendar.add(Calendar.MONTH,1);
		System.out.println(calendar.get(Calendar.MONTH));
		//设置为18日,加6天
		calendar.add(Calendar.DAY_OF_MONTH,6);
		System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
	}
}

运行结果:

Sun Sep 12 15:51:11 CST 2021
2022
2021
9
18

实例6

after 的使用

package demo.demo58;

import java.util.Calendar;

public class Calendar6 {

	public static void main(String[] args) {
		Calendar calendar1 = Calendar.getInstance();
		System.out.println(calendar1.getTime());
		
		//休眠一秒
		try {
			Thread.sleep(1000);
		} catch (Exception e) {
		}
		
		Calendar calendar2 = Calendar.getInstance();
		System.out.println(calendar2.getTime());
		
		if (calendar1.after(calendar2)) {
			System.out.println("calendar1 在 calendar2 之后");
		}else {
			System.out.println("calendar1 在 calendar2 之前");
		}
		
	}
}

运行结果:

Sun Sep 12 16:05:26 CST 2021
Sun Sep 12 16:05:27 CST 2021
calendar1 在 calendar2 之前

实例7

before的使用

package demo.demo58;

import java.util.Calendar;

public class Calendar7 {

	public static void main(String[] args) {
		Calendar calendar1 = Calendar.getInstance();
		System.out.println(calendar1.getTime());
		
		//休眠一秒
		try {
			Thread.sleep(1000);
		} catch (Exception e) {
		}
		
		Calendar calendar2 = Calendar.getInstance();
		System.out.println(calendar2.getTime());
		
		if (calendar1.before(calendar2)) {
			System.out.println("calendar1 在 calendar2 之前");
		}else {
			System.out.println("calendar1 在 calendar2 之后");
		}
		
	}
}

运行结果:

Sun Sep 12 16:06:16 CST 2021
Sun Sep 12 16:06:17 CST 2021
calendar1 在 calendar2 之前

实例8

compareTo用法

package demo.demo58;

import java.util.Calendar;

public class Calendar8 {

	public static void main(String[] args) {
		Calendar calendar1 = Calendar.getInstance();
		System.out.println(calendar1.getTime());
		
		//休眠一秒
		try {
			Thread.sleep(1000);
		} catch (Exception e) {
		}
		
		Calendar calendar2 = Calendar.getInstance();
		System.out.println(calendar2.getTime());
		
		//-1表示calendar1比calendar2小
		System.out.println(calendar1.compareTo(calendar2));
		//1表示calendar2比calendar1大
		System.out.println(calendar2.compareTo(calendar1));
	}
}

运行结果:

Sun Sep 12 16:09:28 CST 2021
Sun Sep 12 16:09:29 CST 2021
-1
1

小结

这节总结了“日期Calendar类详解”,希望能对大家有所帮助,请各位小伙伴帮忙 【点赞】+【收藏】+ 【评论区打卡】, 如果有兴趣跟小明哥一起学习Java的,【关注一波】不迷路哦。

评论区打卡一波让我知道你,明哥会持续关注你的学习进度哦!

导航

✪ Java小白入门200例系列目录索引
◄上一篇  57.日期Date类详解
►下一篇  59.用Calendar实现日历的打印

热门专栏推荐

1.Java小游戏系列(俄罗斯方块、飞机大战、植物大战僵尸等)
2.JavaWeb项目实战(图书管理、在线考试、宿舍管理系统等)
3.JavaScript精彩实例(飞机大战、扫雷、贪吃蛇、验证码等)
4.Java小白入门200例
5.从零学Java、趣学Java、以王者荣耀角度学Java

以上是关于Java小白入门200例58之日期Calendar类详解的主要内容,如果未能解决你的问题,请参考以下文章

Java小白入门200例57之日期Date类详解

Java小白入门200例62之java中日期查询常用实例

Java小白入门200例61之java中Date日期类型的大小比较

Java小白入门200例59之用Calendar实现日历的打印

Java小白入门200例98之Java异常

Java小白入门200例95之Java匿名类