Calendar类的使用
2021/8/3 23:07:59
本文主要是介绍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点)之后返回1 System.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、before Calendar 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的日期是否等于c4 System.out.println(equals); int result = c3.compareTo(c4);// 如果比较c3和c4,如果c3<c4则返回-1,如果c3==c4则返回0,c3>c4则返回1 System.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类的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27Rocket消息队列资料:新手入门指南
- 2024-11-27rocket消息队资料详解与入门指南
- 2024-11-27RocketMQ底层原理资料详解入门教程
- 2024-11-27RocketMQ项目开发资料:新手入门教程
- 2024-11-27RocketMQ项目开发资料详解
- 2024-11-27RocketMQ消息中间件资料入门教程
- 2024-11-27初学者指南:深入了解RocketMQ源码资料
- 2024-11-27Rocket消息队列学习入门指南
- 2024-11-26Rocket消息中间件教程:新手入门详解
- 2024-11-26RocketMQ项目开发教程:新手入门指南