Java Calender 类详解

Wesley13
• 阅读 328

一、   如何创建 Calendar 对象

Calendar 是一个抽象类, 无法通过直接实例化得到对象. 因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar对象, 得到的 Calendar 由当前时间初始化.

1 Calendar cal = Calendar.getInstance();

二、   字段详解

Calendar 中 set 和 get 时间都是通过在参数中填入不同的字段来实现的, 不过有部分字段的常量值与约定俗成的值不相同

下面字段我们以 1998 年 2 月 28 日 23 时 11 分 11 秒 来讲解

1 Calendar cal = Calendar.getInstance();
2 cal.set(Calendar.YEAR, 1998);
3 cal.set(Calendar.MONTH, 1);
4 cal.set(Calendar.DATE, 28);
5 cal.set(Calendar.HOUR_OF_DAY, 23);
6 cal.set(Calendar.MINUTE, 11);
7 cal.set(Calendar.SECOND, 11);

1.  YEAR

默认情况下指示为年份.

例子中 YEAR 为 1998

2.  MONTH

指示当前年中的月份数,一年中的一月的值为 0

需要注意的是 JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER 分别与 [0, 11] 对应, 在设置和获取日期时要格外注意

3.  WEEK_OF_YEAR

指示当前年中的星期数. 一年中的第一个星期的值为 1.

例子中 WEEK_OF_YEAR 为 9

4.  WEEK_OF_MONTH

指示当前月中的星期数. 一个月中第一个星期的值为 1.

例子中 WEEK_OF_MONTH 为 5

5.  DAY_OF_MONTH

指示一个月中的某天. 它与 DATE 是同义词. 一个月中第一天的值为 1.

例子中 DAY_OF_MONTH 为 28

6.  DATE

同 DAY_OF_MONTH

7.  DAY_OF_YEAR

指示当前年中的天数. 一年中第一天的值为 1.

例子中 DAY_OF_YEAR 为 59

8.  DAY_OF_WEEK

指示一个星期中的某天, 一周中第一天的值为 1.

需要 注意 的是, 与中国人的习惯不同, 此处一周中的第一天为 周日. 一周的顺序依次为: 周日(1), 周一(2), 周二(3), 周三(4), 周四(5), 周五(6), 周六(7) 在设置和获取日期时要格外注意

9.  AM_PM

指示 HOUR 是在中午之前还是在中午之后. [0, 12) 为上午, AM_PM 值为 1 [12, 24)为下午, AM_PM 值为 0

10.     HOUR

指示上午或下午的小时.

例子中 HOUR 为 11

11.     HOUR_OF_DAY

指示一天中的小时。 HOUR_OF_DAY 用于 24 小时制时钟

例子中 HOUR_OF_DAY 为 23

12.     MINUTE

指示一小时中的分钟

例子中 MINUTE 为 11

13.     SECOND

指示一分钟中的秒

例子中 SECOND 为 11

三、   设置值

1 cal.set (2013, 5, 4, 13, 44, 51);//年月日时分秒 (月份0代表1月) 
2 cal.set (Calendar.YEAR, 2014);//年 
3 cal.set (Calendar.MONTH, 7);//月 (月份0代表1月) 
4 cal.set (Calendar.DATE, 11);//日 
5 cal.set (Calendar.HOUR_OF_DAY, 15);//时 
6 cal.set (Calendar.MINUTE, 33);//分 
7 cal.set (Calendar.SECOND, 32);//秒 

四、   获取值

1 cal.get (Calendar.YEAR);//年 
2 cal.get (Calendar.MONTH) + 1;//月 (必须要+1) 
3 cal.get (Calendar.DATE);//日 
4 cal.get (Calendar.HOUR_OF_DAY);//时 
5 cal.get (Calendar.MINUTE);//分 
6 cal.get (Calendar.SECOND);//秒 
7 cal.get (Calendar.DAY_OF_WEEK);//星期 (Locale.ENGLISH情况下,周日是1,剩下自己推算)

五、   运算值

1.  Add

1 cal.add (Calendar.YEAR, 1);//年 
2 cal.add (Calendar.MONTH, 1);//月 
3 cal.add (Calendar.DATE, 1);//日 
4 cal.add (Calendar.HOUR_OF_DAY, -1);//时 
5 cal.add (Calendar.MINUTE, 1);//分 
6 cal.add (Calendar.SECOND, 1);//秒 
7 cal.add (Calendar.DATE, 7);//周

六、  Calendar 对象间的比较

比较两个 Calendar 对象表示的时间值, 如果参数表示的时间等于此 Calendar 表示的时间,则返回 0 值;如果此 Calendar 的时间在参数表示的时间之前,则返回小于 0 的值;如果此 Calendar 的时间在参数表示的时间之后,则返回大于 0 的值。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
java 日期累加,如何求一年后日期,一月后日期,一周后日期和一天后日期
importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjava.util.GregorianCalendar;/
Wesley13 Wesley13
2年前
java8的时间和`Date`的对比
java8的时间和Date的对比java8提供了新的时间接口。相对Date,Calendar,个人感觉最大的好处是对时间操作的学习成本很低,比Calendar低。1\.LocalDate,LocalTime,LocalDateTime
Wesley13 Wesley13
2年前
Java8 LocalDate计算两个日期的间隔天数
Java8新增了java.time包,提供了很多新封装好的类,使我们可以摆脱原先使用java.util.Time以及java.util.Calendar带来的复杂。其中LocalDate正是本文中使用的可以帮助计算两个日期的间隔天数的类。(其它常用的还有LocalTime,Clock,Instant等,本文不赘述)话不多说,上代码!L
Wesley13 Wesley13
2年前
Android中Calendar与Date的区别以及消除时区对日期操作影响的方法
Android中Calendar与Date的区别以及消除时区对日期操作影响的方法在Android中的日期操作常用的有三种方式,分别是:1.Date类型2.Calendar类型3.Unix时间戳其中,Unix时间戳在计算上最为方便和灵活,效率也高;而Date和Calendar则在一些具体的日期计算上更为便利。其中,在进行日
Wesley13 Wesley13
2年前
JAVA 获取未来时间以及Java Calendar类详解
直接上代码:SimpleDateFormatdfnewSimpleDateFormat("yyyyMMddHHmmss");DatedatenewDate();linkMap.put("time_start",df.format(date)"");//交易起
Wesley13 Wesley13
2年前
Java 日期时间
java.util包提供了Date类来封装当前的日期和时间。Date类提供两个构造函数来实例化Date对象。Date() 使用当前日期创建对象Date(longmillisec) 使用时间戳 即 从1970年1月1日开始的毫秒数。Date对象创建以后,可以调用下面的方法。1.booleanafter(Datedate)
Stella981 Stella981
2年前
Gson自定义处理Calendar日期Date时间类型
Gson是什么?Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个JSON字符串转成一个Java对象,或者反过来。Gson对一般类型的序列化和反序列话都没有问题,但是像Calendar日期这样的类型,可能需要手动处理下            遇到的问题?时间
Wesley13 Wesley13
2年前
System、Runtime、Date、Calendar、Math
System类中的方法和属性都是静态的。out:标准输出,默认是控制台in:标准输入,默认是键盘获取系统属性信息:PropertiesgetProperties();因为Properties是Hashtable的,也就是Map集合的子类对象,那么可以通过map的方法取出集合中的元素,该集合中存储都是字符串,没有泛型定义。setPr
Wesley13 Wesley13
2年前
Java8 Time API与老Date之间的转换
   前面我已经总结了Java8TimeAPI常用的一些方法、封装的工具类,可是最近需要对一个比较老的项目进行重构,大致看了一下使用的Jdk还是7而且里面的时间工具类还是使用的Date和Calendar。既然是项目重构,我的第一想法是Jdk版本必须得升一升,和同事商量后还是决定使用Java8(本人比较看好Java9中的HTTP/2,奈何9版本广受诟病
Wesley13 Wesley13
2年前
JAVA_常用类
//importjava.text.SimpleDateFormat;//格式化日期//importjava.util.Calendar;//日期//importjava.util.Date;//时间//importjava.util.GregorianCalendar;//Calendar的子类import