常量字段

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.YEARCalendar.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类的使用相关推荐

  1. JavaSE核心之一:Date类、Calendar类、Math类、枚举;

    1.Date类 1) java.util.Date类用于封装日期及时间信息,一般仅用它显示某个日期,不对他作任何操作处理,作处理用Calendar类,计算方便. 2) Date 类本质上拥有一个lon ...

  2. java常用类解析十:Date类和Calendar类示例

    1.Date类实例:格式化输出当前日期 [java] view plaincopy <span style="font-size:16px;">package demo ...

  3. 5、时间日期的处理:Java Date类、Calendar类详解

    在 Java 中获取当前时间,可以使用 java.util.Date 类和 java.util.Calendar 类完成.其中,Date 类主要封装了系统的日期和时间的信息,Calendar 类则会根 ...

  4. Java日期相关类:Date、SimpleDateFormat和Calendar类常用API代码示例

    Date: 表示特定的瞬间,精确到毫秒,他可以通过方法来设定自己所表示的时间,可以表示任意的时间 Date类的构造方法 Date() :创建的是一个表示当前系统时间的Date对象 Date(long ...

  5. Java的calendar类用法

    YEAR  这是哪年 MONTH  这是月(从0开始) WEEK_OF_YEAR 今年的第几星期 WEEK_OF_MONTH 这个月的第几星期(从一开始) DATE  今天几号 DAY_OF_MONT ...

  6. 【Java6】Date类/Calendar类,System类/Math类,包装类,集合,泛型,内部类

    文章目录 1.Date类:getTime(),SimpleDateFormat 2.Calendar类:只有子类对象才能向上转型 3.System类:System.exit(0) 4.Math类:ce ...

  7. Calendar类的常用成员方法

    package com.learn.demo04.Calendar;import java.util.Calendar; import java.util.Date;/*Calendar类的常用成员方 ...

  8. Calendar类介绍_获取对象的方式

    package com.learn.demo04.Calendar;import java.util.Calendar;/*java.util.Calendar类:日历类Calendar类是一个抽象类 ...

  9. 第三次学JAVA再学不好就吃翔(part74)--Calendar类

    学习笔记,仅供参考 Calendar类 Calendar类是java.util包下的一个类,使用该类时需要导包. Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY ...

  10. JAVAAPI学习之Calendar类;Calendar类set()、add()、roll()方法区别

    JAVAAPI学习之Calendar类 http://blog.csdn.net/myjlvzlp/article/details/8065775(写的很好,清晰易懂) Calendar类set(). ...

最新文章

  1. 简述原型链是什么,有什么用处?
  2. 基于Masstransit实现Eventbus的功能
  3. Log4j漏洞?一行代码都不改就能永久修复?
  4. 无法获得 VMCI 驱动程序的版本: 句柄无效。 驱动程序“vmci.sys”的版本不正确。请尝试重新安装 VMware Workstation。 开启模块 DevicePowerOn 的操作失败
  5. “生而强悍” vivo iQOO官宣3月1日发布
  6. [靠谱原创!] SSH免密登录设置----原理详解+具体操作(全国人民看完都懂了!)
  7. Unity2D之Sprite动画相关
  8. const和readonly区别
  9. 5、DOC命令获取连接电脑热点的设备的mac、ip
  10. 直播回顾 | BPM平台与微服务架构天生契合(附资料下载)_Nebulogy_纳比云
  11. 如何在服务器上添加虚拟IP?看完原来如此简单
  12. 规则引擎Drools示例:个人所得税计算器、信用卡申请、保险产品准入规则
  13. Word 使用宏根据文件名实现文件版本号自动更新_rev00
  14. K8S组件介绍及安装
  15. (16)HTML5-E-Mail和时间日期
  16. 使用shiro的会话管理和redis缓存管理来构建登录模块spring+struts+hibernate(SSH)
  17. 【Unity Shader编程】之十四 边缘发光Shader(Rim Shader)的两种实现形态
  18. 中国汽水制造商市场趋势报告、技术动态创新及市场预测
  19. 接口测试--ssl证书
  20. Windows 将文件或文件夹拖动到bat批处理上强制删除

热门文章

  1. 3J40(NiCr40Al)高硬度高强度无磁耐腐蚀高弹性合金
  2. 微信公众号开启付费阅读
  3. Linux的触屏软件安装,触摸屏之linux3.4.2安装tslib
  4. Code Smith第一步
  5. java基础的几种循环结构
  6. css3与android,Android开发人员不得不学习的CSS3基础
  7. java毕业设计师资管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
  8. 荣耀6如何升级android版本号,华为荣耀6升级Android5.1(EMUI3.1)图文教程
  9. 华为/荣耀手机开发者常用设置
  10. centos9 NFS