今天看Qone的代码,看到了这个GregorianCalendar类,觉得挺有意思,上网看了看,总结如下:
GregorianCalendar 类是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
GregorianCalendar 是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家/地区是在 1582 年 10 月 15 日创立,在其他国家/地区要晚一些)。可由调用者通过调用 setGregorianChange() 来更改起始日期。
历史上,在那些首先采用格里高利历的国家/地区中,1582 年 10 月 4 日(儒略历)之后就是 1582 年 10 月 15 日(格里高利历)。此日历正确地模拟了这些变化。在开始格里高利历之前,GregorianCalendar 实现的是儒略历。格里高利历和儒略历之间的唯一区别就是闰年规则。儒略历指定每 4 年就为闰年,而格里高利历则忽略不能被 400 整除的世纪年。
GregorianCalendar 可实现预期的 格里高利历和儒略历。也就是说,可以通过在时间上无限地向后或向前外推当前规则来计算日期。因此,对于所有的年份,都可以使用 GregorianCalendar 来生成有意义并且一致的结果。但是,采用现代儒略历规则时,使用 GregorianCalendar 得到的日期只在历史上从公元 4 年 3 月 1 日之后是准确的。在此日期之前,闰年规则的应用没有规则性,在 45 BC 之前,甚至不存在儒略历。
在格里高利历创立以前,新年是 3 月 25 日。为了避免混淆,此日历始终使用 1 月 1 日为新年。如果想要格里高利历转换之前并且处于 1 月 1 日和 3 月 24 日之间的日期,则可以进行手动调整。
为 WEEK_OF_YEAR 字段所计算的值的范围从 1 到 53。一年的第一个星期始于 getFirstDayOfWeek() 的最早 7 天,至少包含该年的 getMinimalDaysInFirstWeek() 各天。这取决于 getMinimalDaysInFirstWeek()、getFirstDayOfWeek() 的值以及 1 月 1 日是星期几。一年的第一个星期和下一年的第一个星期之间的各个星期按顺序从 2 到 52 或 53(根据需要)进行编号。
例如,1998 年 1 月 1 日是星期四。如果 getFirstDayOfWeek() 为 MONDAY,并且 getMinimalDaysInFirstWeek() 为 4(这些值反映了 ISO 8601 和很多国家/地区标准),则 1998 年的第一个星期开始于 1997 年 12 月 29 日,结束于 1998 年 1 月 4 日。但是,如果 getFirstDayOfWeek() 为 SUNDAY,那么 1998 年的第一个星期开始于 1998 年 1 月 4 日,结束于 1998 年 1 月 10 日;1998 年头三天是 1997 年第 53 个星期的一部分。
为 WEEK_OF_MONTH 字段所计算的值的范围从 0 到 6。一个月的第一个星期(WEEK_OF_MONTH = 1 的日期)是该月至少连续 getMinimalDaysInFirstWeek() 天中的最早日期,结束于 getFirstDayOfWeek() 的前一天。与一年的第一个星期不同,一个月的第一个星期可能短于 7 天,也不必从 getFirstDayOfWeek() 这一天开始,并且不包括前一个月的日期。在第一个星期之前该月日期的 WEEK_OF_MONTH 为 0。
例如,如果 getFirstDayOfWeek() 为 SUNDAY,getMinimalDaysInFirstWeek() 为 4,那么 1998 年 1 月的第一个星期是从 1 月 4 日星期日到 1 月 10 日星期六。这些天的 WEEK_OF_MONTH 为 1。1 月 1 日星期四到 1 月 3 日星期六的 WEEK_OF_MONTH 为 0。如果 getMinimalDaysInFirstWeek() 变为 3,则 1 月 1 日到 1 月 3 日的 WEEK_OF_MONTH 为 1。
clear 方法将日历字段设置为未定义。GregorianCalendar 为每个日历字段使用以下默认值(如果该值未定义)。 字段
默认值
ERA
AD
YEAR
1970
MONTH
JANUARY
DAY_OF_MONTH
1
DAY_OF_WEEK
一个星期的第一天
WEEK_OF_MONTH
0
DAY_OF_WEEK_IN_MONTH
1
AM_PM
AM
HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND
0
默认值不适用于以上未列出的字段。
举例如下:
GregorianCalendar calendar = new GregorianCalendar();
java.util.Date utilDate = new java.util.Date();
calendar.setTime(utilDate);
calendar.add(Calendar.Date,n);
分享到:
相关推荐
Java API中的`java.util.GregorianCalendar`类是用于处理日期和时间的重要工具,它提供了丰富的功能来满足各种日历操作需求。这个类是基于格里高利历(公历)的,是Java中最常用的日期时间类之一。在给定的压缩包...
在Java编程语言中,`GregorianCalendar`类是用于表示日期和时间的重要工具。它是`Calendar`类的一个具体实现,能够处理公历(格里高利历)中的日期和时间。当我们需要获取系统的当前时间时,`GregorianCalendar`类...
### Java中的日期处理类总结:Date、Calendar、GregorianCalendar、DateFormat、SimpleDateFormat 在Java编程中,日期时间处理是常见的需求之一。为了更好地理解和使用Java中的日期处理类,本篇文章将对Date、...
利用GregorianCalendar类实现当月日历的打印。
如果练习涉及到`GregorianCalendar`,可能需要创建一个`GregorianCalendar`实例,进行日期操作,然后可能将其与`Employee`类的`dateHired`属性关联起来。 在实际编程中,这样的继承结构可以帮助我们更好地组织代码...
一个构造方法,带参数,初始化各个属性,特别要求带有年月日的参数,并利用GregorianCalendar日历类生成日期并转化成对应的Date类的日期 对于每个属性添加一个set和get方法 一个实现增长薪水的的方法raiseSalary...
内容索引:Java源码,初学实例,抽象 抽象类和接口的Java相关源代码,包括大家喜欢的日历类Calendar和公历类GregorianCalendar,通过这些源代码可学习接口、声明类以实现Comparable接口、创建自定义接口、将基本数据...
Calendar 类和 GregorianCalendar 类是 Java 语言中用于处理日历的类。Calendar 类是一个抽象类,GregorianCalendar 类是其子类。Calendar 类提供了许多方法用于处理日历,例如 getYear、getMonth、getDayOfWeek 等...
在Java中,处理日期的类主要分为以下几个部分:java.util.Date类、java.util.Calendar类、java.util.GregorianCalendar类、java.text.DateFormat类和java.text.SimpleDateFormat类。 首先,java.util.Date类是Java...
Java中的Date和Calendar类是处理日期和时间的核心组件。Date类主要用于表示特定的瞬间,精确到毫秒。在早期版本的Java中,Date类的设计受到批评,因为它的API不直观且容易导致错误。为了解决这些问题,大部分日期和...
抽象类和接口是Java编程语言中的两种重要概念...`Calendar`和`GregorianCalendar`处理日期和时间,包装类和`BigInteger`、`BigDecimal`处理数值类型,这些类和接口共同构成了Java丰富的标准库,为日常开发提供了便利。
Java中的日期处理涉及到多个类,包括Date、Calendar、GregorianCalendar以及日期格式化类如DateFormat和SimpleDateFormat。这些类主要用于管理、操作和格式化日期和时间。以下是对这些类的详细说明: 1. **Date类**...
一个构造方法,带参数,初始化各个属性,特别要求带有年月日的参数,并利用GregorianCalendar日历类生成日期并转化成对应的Date类的日期. 对于每个属性添加一个set和get方法(建议使用Eclipse的Refactor中的...
3. GregorianCalendar 类:GregorianCalendar 类有两个重要的构造函数:GregorianCalendar() 返回代表当前创建时间的对象;GregorianCalendar(int year, int month, int date) 返回代表任意日期的对象。...
**Calendar 类和 GregorianCalendar 类** 是Java中处理日期和时间的类。`Calendar` 是一个抽象类,提供了对日期和时间的详细信息的访问,如年、月、日、时、分、秒等。`GregorianCalendar` 是 `Calendar` 类的子类,...
这些类位于 `java.util` 包中,包括 `Date`、`Calendar` 和 `GregorianCalendar` 等。本篇文章将深入探讨这些类的功能及其使用方法。 #### 二、`Date` 类 `Date` 类提供了创建和操作日期和时间的基本方法。它有两...
【Date类】 Date类是Java中用于处理时间和日期的基础类,它位于java.util包下。Date对象表示自1970年1月1日00:00:00 UTC(协调世界时)以来的毫秒数。创建Date对象默认表示当前时间。Date类的主要构造方法如下: ``...
在Java中,`Calendar`类的一个具体子类`GregorianCalendar`通常被用于日常的日期时间处理,因为它是基于格里高利历(即公历)的。 ### 知识点二:`SimpleDateFormat`类 `SimpleDateFormat`是`java.text`包下的一个...