JAVA07_Calendar的概述Date的互转常量字段常用方法
Posted 所得皆惊喜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA07_Calendar的概述Date的互转常量字段常用方法相关的知识,希望对你有一定的参考价值。
文章目录
①. Calendar概述初始化
-
①. Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
-
②. public static Calendar getInstance():创建Calendar对象,使用默认时区和环境获得一个日历
②. Calendar与Date互转
- ①. Calendar转化为Date
Calendar c2 = Calendar.getInstance();
// Calendar对象转换成Date对象
Date c2Date = c2.getTime();// 类似于new Date()
- ②. Date转化为Calendar
// 获取日历对象
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
System.out.println(calendar);
③. Calendar的常量字段
常量字段 | 说明 |
---|---|
Calendar.ERA | ERA表示纪元,只能为0或1。0表示BC(“beforeChrist”,即公元前);1表示AD(拉丁语“AnnoDomini”,即公元) |
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 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常用方法
方法 | 解释 |
---|---|
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可以为负数,可以表示如去年、上个月等。 |
// 获取日历对象
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
// 设置日期字段值
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其他方法
方法 | 解释 |
---|---|
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() | 获取时区 |
// 其他方法,如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());
以上是关于JAVA07_Calendar的概述Date的互转常量字段常用方法的主要内容,如果未能解决你的问题,请参考以下文章