JDK源码(二十二):Calendar

Posted jdkSpring

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK源码(二十二):Calendar相关的知识,希望对你有一定的参考价值。

java.util.Calendar类是一个抽象类,它提供了在特定的时间戳和一组Calendar字段之间进行转换的方法,例如年,月,日,小时等等,以及用于操作日历字段的方法,比如下星期的日期。时间的戳可以用毫秒值表示,该值是从1970年1月1日格林尼治标准时间00:00:00.000(公历)开始的偏移量。该类还提供了用于在包外实现具体日历系统的其他字段和方法。这些字段和方法被定义为protected。
Calendar对象可以生成实现特定语言和日历样式的日期时间格式所需的所有日历字段值。Calendar定义某些日历字段返回的值的范围及其含义。例如,对于所有日历,日历系统的第一个月都有值month==JANUARY。其他值由具体的子类定义。可以通过调用set方法设置日历字段值。在需要计算其时间值(从纪元开始的毫秒数)或日历字段的值之前,在日历中设置的任何字段值都不会被解释。
Calendar有两种解释日历字段的模式,容错和非容错。当日历处于 容错模式时,它接受的日历字段值范围比它产生的值范围更广。当日历重新计算日历字段值以通过get()返回时,所有日历字段都将规范化。例如, 容错的GregorianCalendar将MONTH=一月,DAY=32解释为二月一日。
当日历处于 非容错模式时,如果日历字段中存在任何不一致,它将引发异常。例如,GregorianCalendar总是生成介于1和月长之间的DAY_OF_MONTH。如果设置了任何超出范围的字段值,则 非容错的GregorianCalendar在计算其时间或日历字段值时引发异常。

类名

public abstract class Calendar  implements Serializable, Cloneable, Comparable<Calendar>

变量


除了上面这些变量,Calendar还提供了很多时间相关的静态变量,如YEAR、MONTH、WEEK_OF_YEAR ...

实例

Calendar calendar = Calendar.getInstance();

由于Calendar是抽象类,不能使用new关键字。在getInstance()方法中会根据TimeZone时区类型和Locale地区类型创建Calendar对象。

getInstance()

public static Calendar getInstance(){ return createCalendar(TimeZone.getDefault(),  Locale.getDefault(Locale.Category.FORMAT));}

createCalendar(TimeZone zone, Locale aLocale)

JDK源码(二十二):Calendar

获取日期

JDK源码(二十二):Calendar

set(int field, int value)

JDK源码(二十二):Calendar

set方法是将给定的日历字段设置为给定值,internalSet方法中只有一句,fields[field] = value;将value值赋值到fields[]属性中。例如set(Calendar.YEAR, 2019)则表示将年份设置成2019年。

JDK源码(二十二):Calendar

get(int field)

JDK源码(二十二):Calendar

get方法用来获取实例化的Calendar对象储存的年月日时分秒星期等等信息,complete方法主要是对所有日期字段的值进行计算并赋值给相应变量。方法的参数通过Calendar.XXXX的形式填写,比如要想获取年份信息就用Calendar.YEAR、月份Calendar.MONTH、日期Calendar.Date、时Calendar.HOUR、分Calendar.MINUTE、秒Calendar.SECOND等等。

JDK源码(二十二):Calendar

add(int field, int amount)

abstract public void add(int field, int amount);

add方法根据日历的规则,向给定日历字段添加或减去指定的时间量。此方法是抽象方法,调用的时候根据生成的Calendar对象调用对应的add方法。

前一天

以上是关于JDK源码(二十二):Calendar的主要内容,如果未能解决你的问题,请参考以下文章

二十二.SpringCloud源码剖析-Hystrix降级

API接口自动化测试框架搭建(二十二)-全局变量config.py完整代码及解读

介绍开源的.net通信框架NetworkComms框架 源码分析(二十二 )TCPConnectionStatic

运维基本功(二十二): 源码构建LAMP环境解决方案

第三百二十二节,web爬虫,requests请求

Vue.js 源码分析(二十二) 指令篇 v-model指令详解