Calendar类的使用
常量字段
Calendar类的常量字段是非常重要的参数,在set()、add()、get()方法中都会用到。
Calendar类中常用的常量字段如下:
常量字段 | 说明 |
---|---|
Calendar.ERA
|
ERA表示纪元,只能为0或1。0表示BC(“before Christ”,即公元前);1表示AD(拉丁语“Anno Domini”,即公元)。 |
Calendar.YEAR
|
表示年份 |
Calendar.MONTH
|
表示月份,需要加1,因为0表示1月,1表示2月,以此类推 |
Calendar.HOUR
|
小时(12小时制) |
Calendar.HOUR_OF_DAY
|
一天中第几个小时(24小时制) |
Calendar.MINUTE
|
分钟 |
Calendar.SECOND
|
秒 |
Calendar.MILLISECOND
|
毫秒 |
Calendar.DAY_OF_YEAR
|
一年中第几天 |
DAY_OF_MONTH
|
一月中第几天 |
DAY_OF_WEEK
|
一周中第几天,注意,周日是1,周一是2,... |
Calendar.DATE
|
一月中第几天,同DAY_OF_MONTH的值是一样的 |
Calendar.DAY_OF_WEEK_IN_MONTH
|
当月内一周中的某天的序号 |
Calendar.WEEK_OF_YEAR
|
一年中的星期数,即本年中第几个星期 |
Calendar.WEEK_OF_MONTH
|
当前月中的星期数,即本月中第几个星期 |
Calendar.DAY_OF_WEEK_IN_MONTH
|
当前月中的第几个星期 |
Calendar.AM_PM
|
AM_PM是在中午之前还是在中午之后,在中午12点之前返回0,在中午12点(包括12点)之后返回1 |
Calendar.JANUARY
|
1月 |
Calendar.FEBRUARY
|
2月 |
Calendar.MARCH
|
3月 |
Calendar.APRIL
|
4月 |
Calendar.MAY
|
5月 |
Calendar.JUNE
|
6月 |
Calendar.JULY
|
7月 |
Calendar.AUGUST
|
8月 |
Calendar.SEPTEMBER
|
9月 |
Calendar.OCTOBER
|
10月 |
Calendar.NOVEMBER
|
11月 |
Calendar.DECEMBER
|
12月 |
获取Calendar对象
不需要通过new来创建Calendar对象,而是通过Calendar类的getInstance()静态方法。代码如下:
// 获取日历对象
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());// 将Date对象设置到Calendar对象中
常用方法
常用方法就是get、set和add方法,它们的API说明如下:
方法 | 说明 |
---|---|
int get(int field)
|
用于获取日历字段的值,返回值是int类型,其中field参数的值可以是Calendar.YEAR 、Calendar.MONTH 等常量字段。
|
void set(int field, int value)
|
将给定的日历字段设置为指定的值。 |
void set(int year, int month, int date)
|
设置Calendar中的年、月、日字段 |
void set(int year, int month, int date, int hourOfDay, int minute)
|
设置Calendar中的年、月、日、时、分字段 |
void set(int year, int month, int date, int hourOfDay, int minute, int second)
|
设置Calendar中的年、月、日、时、分、秒字段 |
void add(int field, int amount)
|
可以对指定的一个日历字段进行整数的偏移,比如在今年的日期基础上加上一年,就是明年这个时候的日期。其中amount可以为负数,可以表示如去年、上个月等。 |
其他方法
方法 | 说明 |
---|---|
boolean after(Object when)
|
使用例如:c4.after(c3) ,判断c4的日期是否在c3的日期之后。传入的参数必须是Calendar对象。
|
boolean before(Object when)
|
使用例如:c3.before(c4) ,判断c3的日期是否在c4的日期之前。传入的参数必须是Calendar对象。
|
boolean equals(Object obj)
|
使用例如:c3.equals(c4) ,判断c3的日期是否等于c4所表示的日期。传入的参数必须是Calendar对象。
|
int compareTo(Calendar anotherCalendar)
|
使用例如:c3.compareTo(c4) ,如果比较c3和c4,如果c3<c4则返回-1,如果c3==c4则返回0,c3>c4则返回1。
|
int getActualMaximum(int field)
|
返回指定日历字段可能具有的最大值,例如:c5.getActualMaximum(Calendar.DAY_OF_MONTH) ,获取本月最后一天的号数。
|
int getActualMinimum(int field)
|
返回指定日历字段可能具有的最小值,例如:c5.getActualMinimum(Calendar.DAY_OF_MONTH) ,获取本月第一天的号数。
|
long getTimeInMillis()
|
返回此日历对象所表示的毫秒值。 |
int getFirstDayOfWeek()
|
获取一周的第一天是什么。 |
TimeZone getTimeZone()
|
获取时区。 |
Calendar对象与Date对象的相互转换
- Date对象转换成Calendar对象
// Date对象转换成Calendar对象
Calendar c2 = Calendar.getInstance();
c2.setTime(new Date());
- Calendar对象转换成Date对象
Calendar c2 = Calendar.getInstance();
// Calendar对象转换成Date对象
Date c2Date = c2.getTime();// 类似于new Date()
实例
Calendar类的实例代码如下:
public class CalendarTest {public static void main(String[] args) {// 获取日历对象Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());// 获取日期字段值System.out.println(calendar.get(Calendar.ERA));// 纪元,公元前还是公元System.out.println(calendar.get(Calendar.YEAR));// 年份System.out.println(calendar.get(Calendar.MONTH));// 月份,需要加1,因为0表示1月,1表示2月,以此类推System.out.println(calendar.get(Calendar.HOUR));// 小时(12小时制)System.out.println(calendar.get(Calendar.HOUR_OF_DAY));// 一天中第几个小时(24小时制)System.out.println(calendar.get(Calendar.MINUTE));// 分钟System.out.println(calendar.get(Calendar.SECOND));// 秒System.out.println(calendar.get(Calendar.MILLISECOND));// 毫秒System.out.println(calendar.get(Calendar.DAY_OF_YEAR));// 一年中第几天System.out.println(calendar.get(Calendar.DAY_OF_MONTH));// 一月中第几天System.out.println(calendar.get(Calendar.DAY_OF_WEEK));// 一周中第几天,注意,周日是1,周一是2,...System.out.println(calendar.get(Calendar.DATE));// 一月中第几天,同DAY_OF_MONTH的值是一样的System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));// 当月内一周中的某天的序号System.out.println("Calendar.WEEK_OF_YEAR=" + calendar.get(Calendar.WEEK_OF_YEAR));// 一年中的星期数,即本年中第几个星期System.out.println("Calendar.WEEK_OF_MONTH=" + calendar.get(Calendar.WEEK_OF_MONTH));// 当前月中的星期数,即本月中第几个星期System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));// 当前月中的第几个星期System.out.println("Calendar.AM_PM=" + calendar.get(Calendar.AM_PM));// AM_PM是在中午之前还是在中午之后,在中午12点之前返回0,在中午12点(包括12点)之后返回1System.out.println(Calendar.JANUARY);// 1月System.out.println(Calendar.FEBRUARY);// 2月System.out.println(Calendar.MARCH);// 3月System.out.println(Calendar.APRIL);// 4月System.out.println(Calendar.MAY);// 5月System.out.println(Calendar.JUNE);// 6月System.out.println(Calendar.JULY);// 7月System.out.println(Calendar.AUGUST);// 8月System.out.println(Calendar.SEPTEMBER);// 9月System.out.println(Calendar.OCTOBER);// 10月System.out.println(Calendar.NOVEMBER);// 11月System.out.println(Calendar.DECEMBER);// 12月// 设置日期字段值calendar.set(2021, Calendar.JUNE, 3);// 设定指定年月日,其中Calendar.JUNE为5实际上是六月,所以0表示1月,1表示2月,以此类推System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(calendar.getTime()));calendar.set(2021, Calendar.FEBRUARY, 3, 23, 55);// 设置年月日时分System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(calendar.getTime()));calendar.set(2021, Calendar.MARCH, 3, 23, 55, 30);// 设置年月日时分秒calendar.set(Calendar.YEAR, 2005);// 单独设置日历字段,设置年份calendar.set(Calendar.MONTH, 7);// 单独设置日历字段,设置月份,注意0代表1月calendar.set(Calendar.DATE, 11);// 单独设置日历字段,设置天数calendar.set(Calendar.HOUR_OF_DAY, 22);// 单独设置日历字段,设置小时calendar.set(Calendar.MINUTE, 45);// 单独设置日历字段,设置分钟calendar.set(Calendar.SECOND, 30);// 单独设置日历字段,设置秒calendar.set(Calendar.MILLISECOND, 235);// 单独设置日历字段,设置毫秒System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(calendar.getTime()));// 计算日期字段值,既可以为正数,又可以为负数calendar.add(Calendar.YEAR, 2);// 在当前日期的基础上添加年份,后年System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(calendar.getTime()));calendar.add(Calendar.YEAR, -1);// 在当前日期的基础上减去年份,昨年System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(calendar.getTime()));calendar.add(Calendar.MONTH, 1);// 添加月份,下个月calendar.add(Calendar.MONTH, -1);// 添加月份,上个月calendar.add(Calendar.DATE, 2);// 添加天数,后天calendar.add(Calendar.DATE, -1);// 添加天数,昨天calendar.add(Calendar.HOUR_OF_DAY, 1);// 添加小时,下一个小时calendar.add(Calendar.HOUR_OF_DAY, -1);// 添加小时,上一个小时calendar.add(Calendar.MINUTE, 20);// 添加分钟,下20分钟calendar.add(Calendar.MINUTE, -20);// 添加分钟,上20分钟calendar.add(Calendar.SECOND, 30);// 添加秒数,下30秒calendar.add(Calendar.SECOND, -30);// 添加秒数,上30秒calendar.add(Calendar.DATE, 7);// 添加周数,即添加7天,下一周calendar.add(Calendar.DATE, -7);// 添加周数,上一周System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(calendar.getTime()));// Calendar对象与Date对象的相互转换// Date对象转换成Calendar对象Calendar c2 = Calendar.getInstance();c2.setTime(new Date());// Calendar对象转换成Date对象Date c2Date = c2.getTime();// 类似于new Date()// 其他方法,如after、beforeCalendar c3 = Calendar.getInstance();c3.set(Calendar.YEAR, 2005);Calendar c4 = Calendar.getInstance();boolean after = c4.after(c3);// 判断c4的日期是否在c3之后System.out.println(after);boolean before = c3.before(c4);System.out.println(before);// 判断c3的日期是否在c4之前boolean equals = c3.equals(c4);// 判断c3的日期是否等于c4System.out.println(equals);int result = c3.compareTo(c4);// 如果比较c3和c4,如果c3<c4则返回-1,如果c3==c4则返回0,c3>c4则返回1System.out.println(result);Calendar c5 = Calendar.getInstance();c5.clear();c5.set(Calendar.YEAR, 2017);c5.set(Calendar.MONTH, 1);c5.set(Calendar.DAY_OF_MONTH, 30);System.out.println(c5.getTime());int lastDay = c5.getActualMaximum(Calendar.DAY_OF_MONTH);// 获取本月最后一天的号数int firstDay = c5.getActualMinimum(Calendar.DAY_OF_MONTH);// 获取本月第一天的号数System.out.println("本月最后一天:" + lastDay + ", 本月第一天:" + firstDay);// 获取毫秒数long timeInMillis = calendar.getTimeInMillis();// 返回此Calendar的时间值,以毫秒为单位int firstDayOfWeek = calendar.getFirstDayOfWeek();// 获取一个星期中的第一天System.out.println(firstDayOfWeek);TimeZone timeZone = calendar.getTimeZone();// 获取时区System.out.println(timeZone.getDisplayName());}
}
Calendar类的使用相关推荐
- JavaSE核心之一:Date类、Calendar类、Math类、枚举;
1.Date类 1) java.util.Date类用于封装日期及时间信息,一般仅用它显示某个日期,不对他作任何操作处理,作处理用Calendar类,计算方便. 2) Date 类本质上拥有一个lon ...
- java常用类解析十:Date类和Calendar类示例
1.Date类实例:格式化输出当前日期 [java] view plaincopy <span style="font-size:16px;">package demo ...
- 5、时间日期的处理:Java Date类、Calendar类详解
在 Java 中获取当前时间,可以使用 java.util.Date 类和 java.util.Calendar 类完成.其中,Date 类主要封装了系统的日期和时间的信息,Calendar 类则会根 ...
- Java日期相关类:Date、SimpleDateFormat和Calendar类常用API代码示例
Date: 表示特定的瞬间,精确到毫秒,他可以通过方法来设定自己所表示的时间,可以表示任意的时间 Date类的构造方法 Date() :创建的是一个表示当前系统时间的Date对象 Date(long ...
- Java的calendar类用法
YEAR 这是哪年 MONTH 这是月(从0开始) WEEK_OF_YEAR 今年的第几星期 WEEK_OF_MONTH 这个月的第几星期(从一开始) DATE 今天几号 DAY_OF_MONT ...
- 【Java6】Date类/Calendar类,System类/Math类,包装类,集合,泛型,内部类
文章目录 1.Date类:getTime(),SimpleDateFormat 2.Calendar类:只有子类对象才能向上转型 3.System类:System.exit(0) 4.Math类:ce ...
- Calendar类的常用成员方法
package com.learn.demo04.Calendar;import java.util.Calendar; import java.util.Date;/*Calendar类的常用成员方 ...
- Calendar类介绍_获取对象的方式
package com.learn.demo04.Calendar;import java.util.Calendar;/*java.util.Calendar类:日历类Calendar类是一个抽象类 ...
- 第三次学JAVA再学不好就吃翔(part74)--Calendar类
学习笔记,仅供参考 Calendar类 Calendar类是java.util包下的一个类,使用该类时需要导包. Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY ...
- JAVAAPI学习之Calendar类;Calendar类set()、add()、roll()方法区别
JAVAAPI学习之Calendar类 http://blog.csdn.net/myjlvzlp/article/details/8065775(写的很好,清晰易懂) Calendar类set(). ...
最新文章
- 简述原型链是什么,有什么用处?
- 基于Masstransit实现Eventbus的功能
- Log4j漏洞?一行代码都不改就能永久修复?
- 无法获得 VMCI 驱动程序的版本: 句柄无效。 驱动程序“vmci.sys”的版本不正确。请尝试重新安装 VMware Workstation。 开启模块 DevicePowerOn 的操作失败
- “生而强悍” vivo iQOO官宣3月1日发布
- [靠谱原创!] SSH免密登录设置----原理详解+具体操作(全国人民看完都懂了!)
- Unity2D之Sprite动画相关
- const和readonly区别
- 5、DOC命令获取连接电脑热点的设备的mac、ip
- 直播回顾 | BPM平台与微服务架构天生契合(附资料下载)_Nebulogy_纳比云
- 如何在服务器上添加虚拟IP?看完原来如此简单
- 规则引擎Drools示例:个人所得税计算器、信用卡申请、保险产品准入规则
- Word 使用宏根据文件名实现文件版本号自动更新_rev00
- K8S组件介绍及安装
- (16)HTML5-E-Mail和时间日期
- 使用shiro的会话管理和redis缓存管理来构建登录模块spring+struts+hibernate(SSH)
- 【Unity Shader编程】之十四 边缘发光Shader(Rim Shader)的两种实现形态
- 中国汽水制造商市场趋势报告、技术动态创新及市场预测
- 接口测试--ssl证书
- Windows 将文件或文件夹拖动到bat批处理上强制删除
热门文章
- 3J40(NiCr40Al)高硬度高强度无磁耐腐蚀高弹性合金
- 微信公众号开启付费阅读
- Linux的触屏软件安装,触摸屏之linux3.4.2安装tslib
- Code Smith第一步
- java基础的几种循环结构
- css3与android,Android开发人员不得不学习的CSS3基础
- java毕业设计师资管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
- 荣耀6如何升级android版本号,华为荣耀6升级Android5.1(EMUI3.1)图文教程
- 华为/荣耀手机开发者常用设置
- centos9 NFS