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.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
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例61之java中Date日期类型的大小比较