W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---java.util.Calendar
|---|---java.util.GregorianCalendar
public class GregorianCalendar
extends Calendar
GregorianCalendar 是 Calendar 的一個具體子類,并提供世界上大多數(shù)地方使用的標(biāo)準(zhǔn)日歷系統(tǒng)。
GregorianCalendar 是一種混合日歷,它同時支持儒略歷和公歷系統(tǒng),并支持單個不連續(xù)性,默認(rèn)情況下對應(yīng)于公歷制定時的公歷日期(在某些國家/地區(qū)為 1582 年 10 月 15 日,在其他國家/地區(qū)較晚)。 調(diào)用者可以通過調(diào)用 setGregorianChange() 來更改切換日期。
從歷史上看,在那些首先采用公歷的國家中,1582 年 10 月 4 日(儒略歷)隨后是 1582 年 10 月 15 日(公歷)。 這個日歷正確地模擬了這一點。 在公歷轉(zhuǎn)換之前,GregorianCalendar 實現(xiàn)了儒略歷。 公歷和儒略歷之間的唯一區(qū)別是閏年規(guī)則。 儒略歷每四年指定閏年,而公歷省略不能被 400 整除的世紀(jì)年。
GregorianCalendar 實現(xiàn)了預(yù)測的公歷和儒略歷。 也就是說,日期是通過無限期地向后和向前推斷當(dāng)前規(guī)則來計算的。 因此,GregorianCalendar 可用于所有年份以生成有意義且一致的結(jié)果。 然而,使用 GregorianCalendar 獲得的日期僅在公元 4 年 3 月 1 日之后才具有歷史準(zhǔn)確度,當(dāng)時采用了現(xiàn)代儒略歷規(guī)則。 在此日期之前,閏年規(guī)則的應(yīng)用不規(guī)律,而在公元前 45 年之前,儒略歷甚至都不存在。
在公歷制度制定之前,元旦是 3 月 25 日。為避免混淆,此日歷始終使用 1 月 1 日。如果需要,可以手動調(diào)整公歷轉(zhuǎn)換之前的日期和 1 月 1 日之間的日期 和 3 月 24 日。
一年中的一周和一周年
為 Calendar#WEEK_OF_YEAR 字段計算的值范圍為 1 到 53。日歷年的第一周是從 Calendar#getFirstDayOfWeek() 開始的最早的 7 天時間段,其中至少包含該年的 Calendar#getMinimalDaysInFirstWeek() 天。 因此,它取決于 getMinimalDaysInFirstWeek()、getFirstDayOfWeek() 和 1 月 1 日的星期幾的值。一年的第 1 周和下一年的第 1 周(不包括)之間的周數(shù)從 2 到 52 或 53 年(儒略-格里高利過渡所涉及的年份除外)。
getFirstDayOfWeek() 和 getMinimalDaysInFirstWeek() 值在構(gòu)造 GregorianCalendar 時使用與語言環(huán)境相關(guān)的資源進(jìn)行初始化。當(dāng) getFirstDayOfWeek() 為 MONDAY 且 getMinimalDaysInFirstWeek() 為 4 時,星期確定與 ISO 8601 標(biāo)準(zhǔn)兼容,這些值用于首選標(biāo)準(zhǔn)的區(qū)域設(shè)置。這些值可以通過調(diào)用 Calendar#setFirstDayOfWeek(int) 和 Calendar#setMinimalDaysInFirstWeek(int) 顯式設(shè)置。
一周年與 WEEK_OF_YEAR 周期同步。第一周和最后一周(含)之間的所有周都具有相同的周年值。因此,一周年的第一天和最后一天可能具有不同的日歷年值。
例如,1998 年 1 月 1 日是星期四。如果 getFirstDayOfWeek() 為 MONDAY 且 getMinimalDaysInFirstWeek() 為 4(ISO 8601 標(biāo)準(zhǔn)兼容設(shè)置),則 1998 年的第 1 周開始于 1997 年 12 月 29 日,結(jié)束于 1998 年 1 月 4 日。最后三天的周年份為 1998 年1997 日歷年。但是,如果 getFirstDayOfWeek() 是 SUNDAY,則 1998 年的第 1 周從 1998 年 1 月 4 日開始,到 1998 年 1 月 10 日結(jié)束; 1998 年的前三天是 1997 年第 53 周的一部分,他們的周年是 1997 年。
每月的一周
為 WEEK_OF_MONTH 字段計算的值范圍為 0 到 6。一個月的第 1 周(WEEK_OF_MONTH = 1 的天數(shù))是該月中至少 getMinimalDaysInFirstWeek() 連續(xù)天數(shù)的最早集合,在 getFirstDayOfWeek() 之前的一天結(jié)束。 與一年的第 1 周不同,一個月的第 1 周可能短于 7 天,不需要從 getFirstDayOfWeek() 開始,并且不包括上個月的天數(shù)。 第 1 周前一個月的某天的 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。
默認(rèn)字段值
clear 方法將日歷字段設(shè)置為未定義。 如果每個日歷字段的值未定義,GregorianCalendar 將使用以下默認(rèn)值。
默認(rèn)值不適用于上面未列出的字段。
例子:
// get the supported ids for GMT-08:00 (Pacific Standard Time)
String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
// if no ids were returned, something is wrong. get out.
if (ids.length == 0)
System.exit(0);
// begin output
System.out.println("Current Time");
// create a Pacific Standard Time time zone
SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
// set up rules for Daylight Saving Time
pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
// create a GregorianCalendar with the Pacific Daylight time zone
// and the current date and time
Calendar calendar = new GregorianCalendar(pdt);
Date trialTime = new Date();
calendar.setTime(trialTime);
// print out a bunch of interesting things
System.out.println("ERA: " + calendar.get(Calendar.ERA));
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
System.out.println("DATE: " + calendar.get(Calendar.DATE));
System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
System.out.println("ZONE_OFFSET: "
+ (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
System.out.println("DST_OFFSET: "
+ (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
System.out.println("Current Time, with hour reset to 3");
calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
calendar.set(Calendar.HOUR, 3);
System.out.println("ERA: " + calendar.get(Calendar.ERA));
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
System.out.println("DATE: " + calendar.get(Calendar.DATE));
System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
System.out.println("ZONE_OFFSET: "
+ (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
System.out.println("DST_OFFSET: "
+ (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours
從類 java.util.Calendar 繼承的嵌套類/接口 |
---|
Calendar.Builder |
修飾符和類型 | 字段 | 描述 |
---|---|---|
static int | AD | 指示共同時代(Anno Domini)的 ERA 字段的值,也稱為 CE。 |
static int | BC | ERA 字段的值表示普通時代(基督之前)之前的時期,也稱為 BCE。 |
從類 java.util.Calendar 繼承的字段 |
---|
ALL_STYLES, AM, AM_PM, APRIL, areFieldsSet, AUGUST, DATE, DAY_OF_MONTH, DAY_OF_WEEK, DAY_OF_WEEK_IN_MONTH, DAY_OF_YEAR, DECEMBER, DST_OFFSET, ERA, FEBRUARY, FIELD_COUNT, fields, FRIDAY, HOUR, HOUR_OF_DAY, isSet, isTimeSet, JANUARY, JULY, JUNE, LONG, LONG_FORMAT, LONG_STANDALONE, MARCH, MAY, MILLISECOND, MINUTE, MONDAY, MONTH, NARROW_FORMAT, NARROW_STANDALONE, NOVEMBER, OCTOBER, PM, SATURDAY, SECOND, SEPTEMBER, SHORT, SHORT_FORMAT, SHORT_STANDALONE, SUNDAY, THURSDAY, time, TUESDAY, UNDECIMBER, WEDNESDAY, WEEK_OF_MONTH, WEEK_OF_YEAR, YEAR, ZONE_OFFSET |
構(gòu)造函數(shù) | 描述 |
---|---|
GregorianCalendar() | 使用默認(rèn)時區(qū)中的當(dāng)前時間和默認(rèn) Locale.Category#FORMAT 語言環(huán)境構(gòu)造默認(rèn) GregorianCalendar。 |
GregorianCalendar(int year, int month, int dayOfMonth) | 構(gòu)造一個 GregorianCalendar,其給定日期設(shè)置在默認(rèn)時區(qū)和默認(rèn)語言環(huán)境中。 |
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute) | 構(gòu)造一個帶有給定日期和時間的 GregorianCalendar,該日期和時間設(shè)置為具有默認(rèn)語言環(huán)境的默認(rèn)時區(qū)。 |
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second) | 構(gòu)造一個帶有給定日期和時間的 GregorianCalendar,該日期和時間設(shè)置為具有默認(rèn)語言環(huán)境的默認(rèn)時區(qū)。 |
GregorianCalendar(Locale aLocale) | 根據(jù)給定語言環(huán)境的默認(rèn)時區(qū)中的當(dāng)前時間構(gòu)造一個 GregorianCalendar。 |
GregorianCalendar(TimeZone zone) | 使用默認(rèn) Locale.Category#FORMAT 區(qū)域設(shè)置基于給定時區(qū)中的當(dāng)前時間構(gòu)造 GregorianCalendar。 |
GregorianCalendar(TimeZone zone, Locale aLocale) | 根據(jù)給定區(qū)域設(shè)置的給定時區(qū)中的當(dāng)前時間構(gòu)造一個 GregorianCalendar。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
void | add(int field, int amount) | 根據(jù)日歷的規(guī)則,將指定(簽名)的時間量添加到給定的日歷字段。 |
Object | clone() | 創(chuàng)建并返回此對象的副本。 |
protected void | computeFields() | 將時間值(從 Epoch 的毫秒偏移量)轉(zhuǎn)換為日歷字段值。 |
protected void | computeTime() | 將日歷字段值轉(zhuǎn)換為時間值(從 Epoch 開始的毫秒偏移量)。 |
boolean | equals(Object obj) | 將此 GregorianCalendar 與指定的 Object 進(jìn)行比較。 |
static GregorianCalendar | from(ZonedDateTime zdt) | 從 ZonedDateTime 對象獲取具有默認(rèn)語言環(huán)境的 GregorianCalendar 實例。 |
int | getActualMaximum(int field) | 返回此日歷字段可能具有的最大值,同時考慮給定的時間值和 Calendar#getFirstDayOfWeek()、Calendar#getMinimalDaysInFirstWeek()、getGregorianChange 和 Calendar#getTimeZone() 方法的當(dāng)前值。 |
int | getActualMinimum(int field) | 返回此日歷字段可能具有的最小值,同時考慮給定的時間值和 Calendar#getFirstDayOfWeek()、Calendar#getMinimalDaysInFirstWeek()、getGregorianChange 和 Calendar#getTimeZone() 方法的當(dāng)前值。 |
String | getCalendarType() | 返回“gregory”作為日歷類型。 |
int | getGreatestMinimum(int field) | 返回此 GregorianCalendar 實例的給定日歷字段的最大最小值。 |
Date | getGregorianChange() | 獲取公歷更改日期。 |
int | getLeastMaximum(int field) | 返回此 GregorianCalendar 實例的給定日歷字段的最低最大值。 |
int | getMaximum(int field) | 返回此 GregorianCalendar 實例的給定日歷字段的最大值。 |
int | getMinimum(int field) | 返回此 GregorianCalendar 實例的給定日歷字段的最小值。 |
TimeZone | getTimeZone() | 獲取時區(qū)。 |
int | getWeeksInWeekYear() | 返回此 GregorianCalendar 表示的一周年中的周數(shù)。 |
int | getWeekYear() | 返回此 GregorianCalendar 表示的周年。 |
int | hashCode() | 生成此 GregorianCalendar 對象的哈希碼。 |
boolean | isLeapYear(int year) | 確定給定年份是否為閏年。 |
boolean | isWeekDateSupported() | 返回 true 表示此 GregorianCalendar 支持星期日期。 |
void | roll(int field, boolean up) | 在給定時間字段上添加或減去(上/下)單個時間單位,而不更改更大的字段。 |
void | roll(int field, int amount) | 將簽名金額添加到指定的日歷字段而不更改更大的字段。 |
void | setGregorianChange(Date date) | 設(shè)置 GregorianCalendar 更改日期。 |
void | setTimeZone(TimeZone zone) | 使用給定的時區(qū)值設(shè)置時區(qū)。 |
void | setWeekDate(int weekYear, int weekOfYear, int dayOfWeek) | 將此 GregorianCalendar 設(shè)置為日期說明符給出的日期 - weekYear、weekOfYear 和 dayOfWeek。 |
ZonedDateTime | toZonedDateTime() | 將此對象轉(zhuǎn)換為 ZonedDateTime,它表示時間線上與此 GregorianCalendar 相同的點。 |
從類 java.util.Calendar 繼承的方法 |
---|
after, before, clear, clear, compareTo, complete, get, getAvailableCalendarTypes, getAvailableLocales, getDisplayName, getDisplayNames, getFirstDayOfWeek, getInstance, getInstance, getInstance, getInstance, getMinimalDaysInFirstWeek, getTime, getTimeInMillis, internalGet, isLenient, isSet, set, set, set, set, setFirstDayOfWeek, setLenient, setMinimalDaysInFirstWeek, setTime, setTimeInMillis, toInstant, toString |
從類 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
public static final int AD
指示共同時代(Anno Domini)的 ERA 字段的值,也稱為 CE。 從公元前到公元過渡的年份順序是......,公元前2年,公元前1年,公元1年,公元2年,......
public static final int BC
ERA 字段的值表示普通時代(基督之前)之前的時期,也稱為 BCE。 從公元前到公元過渡的年份順序是......,公元前2年,公元前1年,公元1年,公元2年,......
public GregorianCalendar()
使用默認(rèn)時區(qū)中的當(dāng)前時間和默認(rèn) Locale.Category#FORMAT 語言環(huán)境構(gòu)造默認(rèn) GregorianCalendar。
public GregorianCalendar(TimeZone zone)
使用默認(rèn) Locale.Category#FORMAT 區(qū)域設(shè)置基于給定時區(qū)中的當(dāng)前時間構(gòu)造 GregorianCalendar。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
zone | 給定的時區(qū)。 |
public GregorianCalendar(Locale aLocale)
根據(jù)給定語言環(huán)境的默認(rèn)時區(qū)中的當(dāng)前時間構(gòu)造一個 GregorianCalendar。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
aLocale | 給定的語言環(huán)境。 |
public GregorianCalendar(TimeZone zone, Locale aLocale)
根據(jù)給定區(qū)域設(shè)置的給定時區(qū)中的當(dāng)前時間構(gòu)造一個 GregorianCalendar。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
zone | 給定的時區(qū)。 |
aLocale | 給定的語言環(huán)境。 |
public GregorianCalendar(int year, int month, int dayOfMonth)
構(gòu)造一個 GregorianCalendar,其給定日期設(shè)置在默認(rèn)時區(qū)和默認(rèn)語言環(huán)境中。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
year | 用于設(shè)置日歷中 YEAR 日歷字段的值。 |
month | 用于設(shè)置日歷中 MONTH 日歷字段的值。 月份值從 0 開始。 例如,0 表示一月。 |
dayOfMonth | 用于設(shè)置日歷中 DAY_OF_MONTH 日歷字段的值。 |
public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)
構(gòu)造一個帶有給定日期和時間的 GregorianCalendar,該日期和時間設(shè)置為具有默認(rèn)語言環(huán)境的默認(rèn)時區(qū)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
year | 用于設(shè)置日歷中 YEAR 日歷字段的值。 |
month | 用于設(shè)置日歷中 MONTH 日歷字段的值。 月份值從 0 開始。 例如,0 表示一月。 |
dayOfMonth | 用于設(shè)置日歷中 DAY_OF_MONTH 日歷字段的值。 |
hourOfDay | 用于設(shè)置日歷中 HOUR_OF_DAY 日歷字段的值。 |
minute | 用于設(shè)置日歷中 MINUTE 日歷字段的值。 |
public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
構(gòu)造一個帶有給定日期和時間的 GregorianCalendar,該日期和時間設(shè)置為具有默認(rèn)語言環(huán)境的默認(rèn)時區(qū)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
year | 用于設(shè)置日歷中 YEAR 日歷字段的值。 |
month | 用于設(shè)置日歷中 MONTH 日歷字段的值。 月份值從 0 開始。 例如,0 表示一月。 |
dayOfMonth | 用于設(shè)置日歷中 DAY_OF_MONTH 日歷字段的值。 |
hourOfDay | 用于設(shè)置日歷中 HOUR_OF_DAY 日歷字段的值。 |
minute | 用于設(shè)置日歷中 MINUTE 日歷字段的值。 |
second | 用于在日歷中設(shè)置 SECOND 日歷字段的值。 |
public void setGregorianChange(Date date)
設(shè)置 GregorianCalendar 更改日期。 這是從儒略日期轉(zhuǎn)換為公歷日期的時間點。 默認(rèn)值為 1582 年 10 月 15 日(公歷)。 在此之前,日期將采用儒略歷。
要獲取純?nèi)迓詺v,請將更改日期設(shè)置為 Date(Long.MAX_VALUE)。 要獲取純公歷,請將更改日期設(shè)置為 Date(Long.MIN_VALUE)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
date | 給定的公歷截止日期。 |
public final Date getGregorianChange()
獲取公歷更改日期。 這是從儒略日期轉(zhuǎn)換為公歷日期的時間點。 默認(rèn)值為 1582 年 10 月 15 日(公歷)。 在此之前,日期將采用儒略歷。
返回:
此 GregorianCalendar 對象的公歷截止日期。
public boolean isLeapYear(int year)
確定給定年份是否為閏年。 如果給定年份是閏年,則返回 true。 要指定 BC 年編號,必須給出 1 年編號。 例如,公元前 4 年指定為 -3。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
year | 給定的年份。 |
返回:
如果給定年份是閏年,則為 true; 否則為 false。
public String getCalendarType()
返回“gregory”作為日歷類型。
覆蓋:
類 Calendar 中的 getCalendarType
返回:
“gregory”
public boolean equals(Object obj)
將此 GregorianCalendar 與指定的 Object 進(jìn)行比較。 當(dāng)且僅當(dāng)參數(shù)是一個 GregorianCalendar 對象,該對象表示與該對象相同的日歷參數(shù)和公歷更改日期下的相同時間值(從 Epoch 的毫秒偏移量)時,結(jié)果才為true。
覆蓋:
等于日歷類
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 比較的對象。 |
返回:
如果此對象等于 obj,則為 true; 否則為 false。
public int hashCode()
生成此 GregorianCalendar 對象的哈希碼。
覆蓋:
類 Calendar 中的 hashCode
返回:
此對象的哈希碼值。
public void add(int field, int amount)
根據(jù)日歷的規(guī)則,將指定(簽名)的時間量添加到給定的日歷字段。
添加規(guī)則1。調(diào)用后的字段值減去調(diào)用前的字段值是金額,以字段中發(fā)生的任何溢出為模。 當(dāng)字段值超出其范圍時會發(fā)生溢出,因此,下一個較大的字段會遞增或遞減,并且字段值會調(diào)整回其范圍內(nèi)。
增加規(guī)則2,如果一個較小的字段期望是不變的,但是由于字段改變后它的最小值或最大值發(fā)生了變化,使得它不可能等于它的先前值,那么它的值被調(diào)整為盡可能接近 可能達(dá)到其預(yù)期值。 較小的字段表示較小的時間單位。 HOUR 是比 DAY_OF_MONTH 小的字段。 不對預(yù)期不會保持不變的較小字段進(jìn)行任何調(diào)整。 日歷系統(tǒng)確定哪些字段預(yù)計是不變的。
指定者:
添加日歷類
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段。 |
amount | 要添加到字段的日期或時間量。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果字段是 ZONE_OFFSET、DST_OFFSET 或未知,或者如果任何日歷字段在非寬松模式下具有超出范圍的值。 |
public void roll(int field, boolean up)
在給定時間字段上添加或減去(上/下)單個時間單位,而不更改更大的字段。
示例:考慮最初設(shè)置為 1999 年 12 月 31 日的 GregorianCalendar。調(diào)用 roll(Calendar.MONTH, true) 將日歷設(shè)置為 1999 年 1 月 31 日。YEAR 字段未更改,因為它比 MONTH 更大。
指定者:
滾動日歷類
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
up | 指示指定日歷字段的值是向上滾動還是向下滾動。 如果向上滾動則使用 true,否則使用 false。 |
field | 時間字段。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果字段是 ZONE_OFFSET、DST_OFFSET 或未知,或者如果任何日歷字段在非寬松模式下具有超出范圍的值。 |
public void roll(int field, int amount)
將簽名金額添加到指定的日歷字段而不更改更大的字段。負(fù)滾動量意味著從字段中減去而不更改更大的字段。如果指定數(shù)量為 0,則此方法不執(zhí)行任何操作。
此方法在添加金額之前調(diào)用 Calendar.complete() 以便對所有日歷字段進(jìn)行規(guī)范化。如果在非寬松模式下任何日歷字段的值超出范圍,則拋出 IllegalArgumentException。
示例:假設(shè)一個 GregorianCalendar 最初設(shè)置為 1999 年 8 月 31 日。調(diào)用 roll(Calendar.MONTH, 8) 將日歷設(shè)置為 1999 年 4 月 30 日。使用 GregorianCalendar,DAY_OF_MONTH 字段在 4 月份不能為 31。 DAY_OF_MONTH 設(shè)置為最接近的可能值 30。YEAR 字段保持 1999 的值,因為它比 MONTH 更大。
示例:考慮最初設(shè)置為 1999 年 6 月 6 日星期日的 GregorianCalendar。調(diào)用 roll(Calendar.WEEK_OF_MONTH, -1) 將日歷設(shè)置為 1999 年 6 月 1 日星期二,而調(diào)用 add(Calendar.WEEK_OF_MONTH, -1) 將日歷設(shè)置為星期日1999 年 5 月 30 日。這是因為滾動規(guī)則施加了額外的約束:滾動 WEEK_OF_MONTH 時,MONTH 不得更改。與添加規(guī)則 1 一起,結(jié)果日期必須在 6 月 1 日星期二和 6 月 5 日星期六之間。根據(jù)添加規(guī)則 2,DAY_OF_WEEK 是更改 WEEK_OF_MONTH 時的不變量,設(shè)置為星期二,最接近星期日的可能值(其中星期日是一周的第一天)。
覆蓋:
滾動日歷類
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段。 |
amount | 要添加到字段的簽名金額。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果字段是 ZONE_OFFSET、DST_OFFSET 或未知,或者如果任何日歷字段在非寬松模式下具有超出范圍的值。 |
public int getMinimum(int field)
返回此 GregorianCalendar 實例的給定日歷字段的最小值。 最小值定義為 Calendar#get(int) 方法針對任何可能的時間值返回的最小值,同時考慮到 Calendar#getFirstDayOfWeek()、Calendar#getMinimalDaysInFirstWeek()、getGregorianChange 和 Calendar#getTimeZone 的當(dāng)前值 () 方法。
指定者:
日歷類中的getMinimum
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段。 |
返回:
給定日歷字段的最小值。
public int getMaximum(int field)
返回此 GregorianCalendar 實例的給定日歷字段的最大值。 最大值定義為 Calendar#get(int) 方法針對任何可能的時間值返回的最大值,同時考慮到 Calendar#getFirstDayOfWeek()、Calendar#getMinimalDaysInFirstWeek()、getGregorianChange 和 Calendar#getTimeZone 的當(dāng)前值 () 方法。
指定者:
日歷類中的getMaximum
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段。 |
返回:
給定日歷字段的最大值。
public int getGreatestMinimum(int field)
返回此 GregorianCalendar 實例的給定日歷字段的最大最小值。 考慮到 Calendar#getFirstDayOfWeek()、Calendar#getMinimalDaysInFirstWeek()、getGregorianChange 和 Calendar#getTimeZone() 方法的當(dāng)前值,最高最小值定義為 getActualMinimum(int) 針對任何可能的時間值返回的最大值 .
指定者:
日歷類中的getGreatestMinimum
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段。 |
返回:
給定日歷字段的最高最小值。
public int getLeastMaximum(int field)
返回此 GregorianCalendar 實例的給定日歷字段的最低最大值。 考慮到 Calendar#getFirstDayOfWeek()、Calendar#getMinimalDaysInFirstWeek()、getGregorianChange 和 Calendar#getTimeZone() 方法的當(dāng)前值,最低最大值定義為 getActualMaximum(int) 針對任何可能的時間值返回的最小值 .
指定者:
日歷類中的getLeastMaximum
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段 |
返回:
給定日歷字段的最低最大值。
public int getActualMinimum(int field)
返回此日歷字段可能具有的最小值,同時考慮給定的時間值和 Calendar#getFirstDayOfWeek()、Calendar#getMinimalDaysInFirstWeek()、getGregorianChange 和 Calendar#getTimeZone() 方法的當(dāng)前值。
例如,如果公歷更改日期為 1970 年 1 月 10 日,并且此 GregorianCalendar 的日期為 1970 年 1 月 20 日,則 DAY_OF_MONTH 字段的實際最小值為 10,因為 1970 年 1 月 10 日的上一個日期是 1996 年 12 月 27 日( 在儒略歷中)。 因此,1969 年 12 月 28 日至 1970 年 1 月 9 日不存在。
覆蓋:
日歷類中的 getActualMinimum
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段 |
返回:
此 GregorianCalendar 的時間值的給定字段的最小值
public int getActualMaximum(int field)
返回此日歷字段可能具有的最大值,同時考慮給定的時間值和 Calendar#getFirstDayOfWeek()、Calendar#getMinimalDaysInFirstWeek()、getGregorianChange 和 Calendar#getTimeZone() 方法的當(dāng)前值。 例如,如果此實例的日期是 2004 年 2 月 1 日,則 DAY_OF_MONTH 字段的實際最大值為 29,因為 2004 年是閏年,如果此實例的日期是 2005 年 2 月 1 日,則為 28。
此方法根據(jù) Calendar#YEAR(日歷年)值而不是周年計算 Calendar#WEEK_OF_YEAR 的最大值。 調(diào)用 getWeeksInWeekYear() 以獲取此 GregorianCalendar 的周年中 WEEK_OF_YEAR 的最大值。
覆蓋:
日歷類中的 getActualMaximum
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段 |
返回:
此 GregorianCalendar 的時間值的給定字段的最大值
public Object clone()
從班級復(fù)制的描述:日歷
創(chuàng)建并返回此對象的副本。
覆蓋:
在日歷類中克隆
返回:
此對象的副本。
public TimeZone getTimeZone()
從班級復(fù)制的描述:日歷
獲取時區(qū)。
覆蓋:
類 Calendar 中的 getTimeZone
返回:
與此日歷關(guān)聯(lián)的時區(qū)對象。
public void setTimeZone(TimeZone zone)
從班級復(fù)制的描述:日歷
使用給定的時區(qū)值設(shè)置時區(qū)。
覆蓋:
日歷類中的 setTimeZone
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
zone | 給定的時區(qū)。 |
public final boolean isWeekDateSupported()
返回 true 表示此 GregorianCalendar 支持星期日期。
覆蓋:
類 Calendar 中的 isWeekDateSupported
返回:
true(總是)
public int getWeekYear()
返回此 GregorianCalendar 表示的周年。 在 1 和周年的最大周數(shù)之間的周中的日期具有相同的周年值,可能在 Calendar#YEAR(日歷年)值之前或之后一年。
此方法在計算周年之前調(diào)用 Calendar#complete()。
覆蓋:
課堂日歷中的getWeekYear
返回:
此 GregorianCalendar 表示的周年。 如果 Calendar#ERA 值為 BC,則年份由 0 或負(fù)數(shù)表示:BC 1 為 0,BC 2 為 -1,BC 3 為 -2,依此類推。
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果任何日歷字段在非寬松模式下無效。 |
public void setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
將此 GregorianCalendar 設(shè)置為日期說明符給出的日期 - weekYear、weekOfYear 和 dayOfWeek。 weekOfYear 遵循 WEEK_OF_YEAR 編號。 dayOfWeek 值必須是 Calendar#DAY_OF_WEEK 值之一:Calendar#SUNDAY 到 Calendar#SATURDAY。
請注意,數(shù)字星期幾表示不同于 ISO 8601 標(biāo)準(zhǔn),并且當(dāng) getFirstDayOfWeek() 為 MONDAY 且 getMinimalDaysInFirstWeek() 為 4 時,weekOfYear 編號與標(biāo)準(zhǔn)兼容。
與 set 方法不同,所有日歷字段和時間值都是在返回時計算的。
如果 weekOfYear 超出了 weekYear 中的有效周范圍,則在寬松模式下調(diào)整 weekYear 和 weekOfYear 值,或者在非寬松模式下拋出 IllegalArgumentException。
覆蓋:
日歷類中的 setWeekDate
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
weekYear | 一周年 |
weekOfYear | 基于 weekYear 的周數(shù) |
dayOfWeek | 星期幾值:DAY_OF_WEEK 字段的常量之一:Calendar#SUNDAY, ..., Calendar#SATURDAY。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果任何給定的日期說明符無效,或者任何日歷字段與非寬松模式下的給定日期說明符不一致 |
public int getWeeksInWeekYear()
返回此 GregorianCalendar 表示的一周年中的周數(shù)。
例如,如果此 GregorianCalendar 的日期為 2008 年 12 月 31 日,且設(shè)置為 ISO 8601 兼容,則此方法將在以下期間返回 53:2008 年 12 月 29 日至 2010 年 1 月 3 日,而 getActualMaximum(WEEK_OF_YEAR) 將在以下期間返回 52:12 月 2007 年 31 月 31 日至 2008 年 12 月 28 日。
覆蓋:
類日歷中的getWeeksInWeekYear
返回:
一周中的周數(shù)。
protected void computeFields()
將時間值(從 Epoch 的毫秒偏移量)轉(zhuǎn)換為日歷字段值。 時間不先重新計算; 重新計算時間,然后是字段,調(diào)用完整方法。
指定者:
日歷類中的 computeFields
protected void computeTime()
將日歷字段值轉(zhuǎn)換為時間值(從 Epoch 開始的毫秒偏移量)。
指定者:
日歷類中的 computeTime
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果任何日歷字段無效。 |
public ZonedDateTime toZonedDateTime()
將此對象轉(zhuǎn)換為 ZonedDateTime,它表示時間線上與此 GregorianCalendar 相同的點。
由于此對象支持 Julian-Gregorian 轉(zhuǎn)換日期而 ZonedDateTime 不支持,因此生成的年、月和日可能具有不同的值。 結(jié)果將代表 ISO 日歷系統(tǒng)中的正確日期,這對于修改儒略日也將是相同的值。
返回:
表示時間線上與此公歷相同的點的分區(qū)日期時間
public static GregorianCalendar from(ZonedDateTime zdt)
從 ZonedDateTime 對象獲取具有默認(rèn)語言環(huán)境的 GregorianCalendar 實例。
由于 ZonedDateTime 不支持 Julian-Gregorian 轉(zhuǎn)換日期并使用 ISO 日歷系統(tǒng),因此返回 GregorianCalendar 是純公歷并使用 ISO 8601 標(biāo)準(zhǔn)定義周,其中 MONDAY 作為 Calendar#getFirstDayOfWeek() 和 4 作為值 日歷#getMinimalDaysInFirstWeek()。
ZoneDateTime 可以比 GregorianCalendar 在未來和過去更遠(yuǎn)地存儲時間線上的點。 在這種情況下,此方法將引發(fā) IllegalArgumentException 異常。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
zdt | 要轉(zhuǎn)換的分區(qū)日期時間對象 |
返回:
公歷,表示時間線上與提供的分區(qū)日期時間相同的點
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 zdt 為空 |
IllegalArgumentException | 如果分區(qū)日期時間太大而無法表示為 GregorianCalendar |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: