W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
java.lang.Object
|---java.util.Calendar.Builder
public static class Calendar.Builder
extends Object
Calendar.Builder 用于從各種日期時(shí)間參數(shù)創(chuàng)建日歷。
有兩種方法可以將日歷設(shè)置為日期時(shí)間值。一種是將 Instant 參數(shù)設(shè)置為距 Epoch 的毫秒偏移量。另一種是將單個(gè)字段參數(shù)(例如 Calendar#YEAR)設(shè)置為所需的值。這兩種方式不能混用。嘗試同時(shí)設(shè)置即時(shí)字段和單個(gè)字段將導(dǎo)致拋出 IllegalStateException。但是,允許覆蓋即時(shí)或字段參數(shù)的先前值。
如果沒有為確定日期和/或時(shí)間提供足夠的字段參數(shù),則在構(gòu)建日歷時(shí)使用日歷特定的默認(rèn)值。例如,如果沒有為公歷指定 Calendar#YEAR 值,則將使用 1970。如果字段參數(shù)之間存在任何沖突,則應(yīng)用解析規(guī)則。因此,字段設(shè)置的順序很重要。
除了日期時(shí)間參數(shù)外,還可以設(shè)置語言環(huán)境、時(shí)區(qū)、星期定義和寬大模式參數(shù)。
例子
以下是示例用法。示例代碼假定日歷常量是靜態(tài)導(dǎo)入的。
以下代碼生成日期為 2012-12-31(公歷)的日歷,因?yàn)樾瞧谝皇蔷哂?ISO 8601 兼容周參數(shù)的一周的第一天。
Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
.setWeekDate(2013, 1, MONDAY).build();
以下代碼生成日期為 1989-01-08(公歷)的日本日歷,假設(shè)默認(rèn) Calendar#ERA 是當(dāng)天開始的平成。
Calendar cal = new Calendar.Builder().setCalendarType("japanese")
.setFields(YEAR, 1, DAY_OF_YEAR, 1).build();
構(gòu)造函數(shù) | 描述 |
---|---|
Builder() | 構(gòu)造一個(gè) Calendar.Builder。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
Calendar | build() | 返回由 setter 方法設(shè)置的參數(shù)構(gòu)建的 Calendar。 |
Calendar.Builder | set(int field, int value) | 將字段參數(shù)設(shè)置為給定值。 |
Calendar.Builder | setCalendarType(String type) | 將日歷類型參數(shù)設(shè)置為給定類型。 |
Calendar.Builder | setDate(int year, int month, int dayOfMonth) | 將日期字段參數(shù)設(shè)置為由 year、month 和 dayOfMonth 給出的值。 |
Calendar.Builder | setFields(int... fieldValuePairs) | 將字段參數(shù)設(shè)置為由 fieldValuePairs 給定的值,它們是字段及其值的對(duì)。 |
Calendar.Builder | setInstant(long instant) | 將 Instant 參數(shù)設(shè)置為給定的瞬時(shí)值,該值是從 Epoch 的毫秒偏移量。 |
Calendar.Builder | setInstant(Date instant) | 將 Instant 參數(shù)設(shè)置為由 Date 給出的瞬時(shí)值。 |
Calendar.Builder | setLenient(boolean lenient) | 將 lenient 模式參數(shù)設(shè)置為 lenient 給出的值。 |
Calendar.Builder | setLocale(Locale locale) | 將語言環(huán)境參數(shù)設(shè)置為給定的語言環(huán)境。 |
Calendar.Builder | setTimeOfDay(int hourOfDay, int minute, int second) | 將時(shí)間字段參數(shù)設(shè)置為由 hourOfDay、minute 和 second 給出的值。 |
Calendar.Builder | setTimeOfDay(int hourOfDay, int minute, int second, int millis) | 將時(shí)間字段參數(shù)設(shè)置為由 hourOfDay、minute、second 和 millis 給出的值。 |
Calendar.Builder | setTimeZone(TimeZone zone) | 將時(shí)區(qū)參數(shù)設(shè)置為給定的區(qū)域。 |
Calendar.Builder | setWeekDate(int weekYear, int weekOfYear, int dayOfWeek) | 將基于周的日期參數(shù)設(shè)置為具有給定日期說明符的值 - 周年、年周和周日。 |
Calendar.Builder | setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek) | 將周定義參數(shù)設(shè)置為 firstDayOfWeek 和 minimumDaysInFirstWeek 給出的值,用于確定一年中的第一周。 |
從類 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
public Builder()
構(gòu)造一個(gè) Calendar.Builder。
public Calendar.Builder setInstant(long instant)
將 Instant 參數(shù)設(shè)置為給定的瞬時(shí)值,該值是從 Epoch 的毫秒偏移量。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
instant | 從 Epoch 的毫秒偏移量 |
返回:
這個(gè) Calendar.Builder
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalStateException | 如果已經(jīng)設(shè)置了任何字段參數(shù) |
public Calendar.Builder setInstant(Date instant)
將 Instant 參數(shù)設(shè)置為由 Date 給出的瞬時(shí)值。 此方法等效于調(diào)用 setInstant(instant.getTime())。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
instant | 表示從 Epoch 開始的毫秒偏移量的 Date |
返回:
這個(gè) Calendar.Builder
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 instant 為空 |
IllegalStateException | 如果已經(jīng)設(shè)置了任何字段參數(shù) |
public Calendar.Builder set(int field, int value)
將字段參數(shù)設(shè)置為給定值。 field 是 Calendar#fields 的索引,例如 Calendar#DAY_OF_MONTH。 此方法不執(zhí)行字段值驗(yàn)證。 在構(gòu)建日歷時(shí),任何超出范圍的值要么在寬松模式下被標(biāo)準(zhǔn)化,要么在非寬松模式下被檢測(cè)為無效值。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段的索引 |
value | 字段值 |
返回:
這個(gè) Calendar.Builder
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果字段無效 |
IllegalStateException | 如果已經(jīng)設(shè)置了即時(shí)值,或者如果字段設(shè)置太多(大約 Integer#MAX_VALUE)次。 |
public Calendar.Builder setFields(int... fieldValuePairs)
將字段參數(shù)設(shè)置為由 fieldValuePairs 給定的值,它們是字段及其值的對(duì)。 例如,
setFeilds(Calendar.YEAR, 2013,
Calendar.MONTH, Calendar.DECEMBER,
Calendar.DAY_OF_MONTH, 23);
等價(jià)于以下集合調(diào)用的序列:
set(Calendar.YEAR, 2013)
.set(Calendar.MONTH, Calendar.DECEMBER)
.set(Calendar.DAY_OF_MONTH, 23);
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fieldValuePairs | 字段值對(duì) |
返回:
這個(gè) Calendar.Builder
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 fieldValuePairs 為空 |
IllegalArgumentException | 如果任何字段無效,或者 fieldValuePairs.length 是奇數(shù)。 |
IllegalStateException | 如果設(shè)置了即時(shí)值,或者字段設(shè)置的次數(shù)過多(大約為 Integer#MAX_VALUE)次。 |
public Calendar.Builder setDate(int year, int month, int dayOfMonth)
將日期字段參數(shù)設(shè)置為由 year、month 和 dayOfMonth 給出的值。 此方法等效于調(diào)用:
setFields(Calendar.YEAR, year,
Calendar.MONTH, month,
Calendar.DAY_OF_MONTH, dayOfMonth);
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
year | 日歷#YEAR 值 |
month | Calendar#MONTH 值(月份編號(hào)從 0 開始)。 |
dayOfMonth | Calendar#DAY_OF_MONTH 值 |
返回:
這個(gè) Calendar.Builder
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second)
將時(shí)間字段參數(shù)設(shè)置為由 hourOfDay、minute 和 second 給出的值。 此方法等效于調(diào)用:
setTimeOfDay(hourOfDay, minute, second, 0);
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
hourOfDay | Calendar#HOUR_OF_DAY 值(24 小時(shí)制) |
minute | 日歷#MINUTE 值 |
second | 日歷#SECOND 值 |
返回:
這個(gè) Calendar.Builder
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second, int millis)
將時(shí)間字段參數(shù)設(shè)置為由 hourOfDay、minute、second 和 millis 給出的值。 此方法等效于調(diào)用:
setFields(Calendar.HOUR_OF_DAY, hourOfDay,
Calendar.MINUTE, minute,
Calendar.SECOND, second,
Calendar.MILLISECOND, millis);
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
hourOfDay | Calendar#HOUR_OF_DAY 值(24 小時(shí)制) |
minute | 日歷#MINUTE 值 |
second | 日歷#SECOND 值 |
millis | 日歷#MILLISECOND 值 |
返回:
這個(gè) Calendar.Builder
public Calendar.Builder setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
將基于周的日期參數(shù)設(shè)置為具有給定日期說明符的值 - 周年、年周和周日。
如果指定的日歷不支持星期日期,則 build 方法將拋出 IllegalArgumentException。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
weekYear | 一周年 |
weekOfYear | 基于 weekYear 的周數(shù) |
dayOfWeek | 星期幾值:Calendar#DAY_OF_WEEK 字段的常量之一:Calendar#SUNDAY, ..., Calendar#SATURDAY。 |
返回:
這個(gè) Calendar.Builder
public Calendar.Builder setTimeZone(TimeZone zone)
將時(shí)區(qū)參數(shù)設(shè)置為給定的區(qū)域。 如果沒有為此 Caledar.Builder 提供時(shí)區(qū)參數(shù),則 TimeZone#getDefault() 將在構(gòu)建方法中使用。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
zone | 時(shí)區(qū) |
返回:
這個(gè) Calendar.Builder
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果區(qū)域?yàn)榭?/td> |
public Calendar.Builder setLenient(boolean lenient)
將 lenient 模式參數(shù)設(shè)置為 lenient 給出的值。 如果此 Calendar.Builder 沒有給出 lenient 參數(shù),則在 build 方法中將使用 lenient 模式。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
lenient | 寬松模式下為true; 非寬松模式為 false |
返回:
這個(gè) Calendar.Builder
public Calendar.Builder setCalendarType(String type)
將日歷類型參數(shù)設(shè)置為給定類型。 此方法給出的日歷類型優(yōu)先于語言環(huán)境給出的任何顯式或隱式日歷類型。
除了 Calendar#getAvailableCalendarTypes() 方法返回的可用日歷類型之外,作為“gregory”的別名的“gregorian”和“iso8601”可以與此方法一起使用。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
type | 日歷類型 |
返回:
這個(gè) Calendar.Builder
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果類型為空 |
IllegalArgumentException | 如果類型未知 |
IllegalStateException | 如果已經(jīng)設(shè)置了另一種日歷類型 |
public Calendar.Builder setLocale(Locale locale)
將語言環(huán)境參數(shù)設(shè)置為給定的語言環(huán)境。 如果沒有為此 Calendar.Builder 指定區(qū)域設(shè)置,則將使用 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
如果調(diào)用 setCalendarType 方法沒有明確給出日歷類型,則使用 Locale 值來確定要構(gòu)建的日歷類型。
如果調(diào)用 setWeekDefinition 方法沒有明確給出周定義參數(shù),則使用區(qū)域設(shè)置的默認(rèn)值。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
locale | 語言環(huán)境 |
返回:
這個(gè) Calendar.Builder
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果語言環(huán)境為空 |
public Calendar.Builder setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek)
將周定義參數(shù)設(shè)置為 firstDayOfWeek 和 minimumDaysInFirstWeek 給出的值,用于確定一年中的第一周。 此方法給出的參數(shù)優(yōu)先于語言環(huán)境給出的默認(rèn)值。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
firstDayOfWeek | 一周的第一天; Calendar#SUNDAY 到 Calendar#SATURDAY 之一 |
minimalDaysInFirstWeek | 第一周的最少天數(shù) (1..7) |
返回:
這個(gè) Calendar.Builder
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果 firstDayOfWeek 或 minimumDaysInFirstWeek 無效 |
public Calendar build()
返回由 setter 方法設(shè)置的參數(shù)構(gòu)建的 Calendar。 setCalendarType 方法或語言環(huán)境給出的日歷類型用于確定要?jiǎng)?chuàng)建的日歷。 如果沒有給出明確的日歷類型,則創(chuàng)建區(qū)域設(shè)置的默認(rèn)日歷。
如果日歷類型為“iso8601”,則將 GregorianCalendar 的 GregorianCalendar#setGregorianChange(Date) 設(shè)置為 Date(Long.MIN_VALUE) 以作為預(yù)想的公歷。 其周定義參數(shù)也設(shè)置為與 ISO 8601 標(biāo)準(zhǔn)兼容。 請(qǐng)注意,使用“iso8601”創(chuàng)建的 GregorianCalendar#getCalendarType() 方法返回“gregory”。
如果沒有明確給出這些參數(shù),則默認(rèn)值用于區(qū)域設(shè)置和時(shí)區(qū)。
任何超出范圍的字段值要么在寬松模式下被規(guī)范化,要么在非寬松模式下被檢測(cè)為無效值。
返回:
使用此 Calendar.Builder 的參數(shù)構(gòu)建的日歷
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果日歷類型未知,或者在非寬松模式下提供了任何無效字段值,或者為不支持星期日期的日歷類型提供了星期日期。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: