類ZonedDateTime
- java.lang.Object繼承
-
- java.time.ZonedDateTime
-
- 所有實現的接口:
- Serializable , Comparable < ChronoZonedDateTime <?>>, ChronoZonedDateTime < LocalDate >, Temporal , TemporalAccessor
public final class ZonedDateTime extends Object 實現Temporal,ChronoZonedDateTime < LocalDate >,Serializable
帶有ISO-8601日歷系統中的時區的日期時間,例如2007-12-03T10:15:30+01:00 Europe/Paris
。ZonedDateTime
是具有時區的日期時間的不可變表示。該類將所有日期和時間字段存儲為精確度為納秒的時區以及用於處理模糊的本地日期時間的區域偏移量的時區。例如,可以將“2007年10月2日在13:45.30.123456789 +02:00在歐洲/巴黎時區”的值存儲在a中ZonedDateTime
。這個類處理從本地時間線
LocalDateTime
到即時時間線的轉換Instant
。兩條時間線之間的差異是UTC /格林威治的偏移量,用a表示ZoneOffset
。在兩條時間線之間轉換涉及使用
rules
從中訪問的偏移量來計算偏移量ZoneId
。獲得瞬間偏移很簡單,因為每個瞬間只有一個有效偏移量。相比之下,獲取本地日期時間的偏移量並不簡單。有三種情況:- 正常,有一個有效的偏移量。對於一年中絕大多數時間,正常情況下適用,當地日期時間有一個有效偏移量。
- 差距,零有效抵消。這通常是由於春季夏令時從“冬季”變為“夏季”時,時鍾向前跳躍。在缺口中存在沒有有效偏移量的本地日期 - 時間值。
- 重疊,有兩個有效的偏移量。這通常是由於秋季夏令時從“夏季”變為“冬季”,因此時鍾退回。在重疊處有本地日期時間值和兩個有效偏移量。
任何通過獲取偏移量直接或隱式地從本地日期時間轉換為瞬間的方法都有可能變得復雜。
對於差距,一般策略是,如果當地日期時間落在間隙的中間,則所產生的分區日期時間將具有當地日期時間向前偏移Gap的長度,從而導致日期 - 時間在后面的偏移中,通常是“夏天”時間。
對於重疊,一般策略是,如果本地日期 - 時間落在重疊的中間,那么之前的偏移將被保留。如果沒有先前的偏移量,或者先前的偏移量無效,則使用較早的偏移量,通常為“夏季”時間。另外兩種方法,
withEarlierOffsetAtOverlap()
並withLaterOffsetAtOverlap()
幫助管理重疊情況。在設計方面,這個類應該主要被看作是a
LocalDateTime
和a 的組合ZoneId
。這ZoneOffset
是一個重要但次要的信息,用於確保課程表示一個瞬間,特別是在夏令時重疊期間。這是一個基於價值的 課程;
==
對實例使用身份敏感操作(包括引用相等(),身份哈希代碼或同步)ZonedDateTime
可能會產生不可預知的結果,應予以避免。該equals
方法應該用於比較。- 實施要求:
-
一個
ZonedDateTime
持有狀態相當於三個單獨的對象,aLocalDateTime
,aZoneId
和已解決ZoneOffset
。偏移量和本地日期時間用於在必要時定義一個瞬間。區域ID用於獲取偏移量如何以及何時更改的規則。偏移不能自由設置,因為區域控制哪些偏移有效。這個類是不可變的,線程安全的。
- 以來:
- 1.8
- 也可以看看:
- 序列化表格
-
-
方法摘要
所有方法靜態方法實例方法具體方法 修飾符和類型 方法和描述 boolean
equals(Object obj)
檢查這個日期時間是否等於另一個日期時間。String
format(DateTimeFormatter formatter)
使用指定的格式化程序格式化此日期時間。static ZonedDateTime
from(TemporalAccessor temporal)
ZonedDateTime
從一個時間對象中獲得一個實例。int
get(TemporalField field)
從該日期時間獲取指定字段的值作為int
。int
getDayOfMonth()
獲取日期字段。DayOfWeek
getDayOfWeek()
獲取星期幾字段,這是一個枚舉DayOfWeek
。int
getDayOfYear()
獲得一年中的一個領域。int
getHour()
獲取一天中的時間字段。long
getLong(TemporalField field)
從該日期時間獲取指定字段的值作為along
。int
getMinute()
獲取分鍾的字段。Month
getMonth()
獲取使用Month
枚舉的月份字段。int
getMonthValue()
獲取從1到12的月份字段。int
getNano()
獲取納秒級字段。ZoneOffset
getOffset()
獲取區域偏移量,例如'+01:00'。int
getSecond()
獲取第二分鍾的字段。int
getYear()
獲取年份字段。ZoneId
getZone()
獲取時區,如“歐洲/巴黎”。int
hashCode()
這個日期時間的哈希碼。boolean
isSupported(TemporalField field)
檢查指定的字段是否受支持。boolean
isSupported(TemporalUnit unit)
檢查指定的單位是否受支持。ZonedDateTime
minus(long amountToSubtract, TemporalUnit unit)
返回此日期時間的副本,並減去指定的金額。ZonedDateTime
minus(TemporalAmount amountToSubtract)
返回此日期時間的副本,並減去指定的金額。ZonedDateTime
minusDays(long days)
ZonedDateTime
以指定的天數減去返回此副本。ZonedDateTime
minusHours(long hours)
ZonedDateTime
以指定的小時數減去返回此副本。ZonedDateTime
minusMinutes(long minutes)
ZonedDateTime
以指定的分鍾數減去返回此副本。ZonedDateTime
minusMonths(long months)
以ZonedDateTime
減去指定的月數返回此副本。ZonedDateTime
minusNanos(long nanos)
ZonedDateTime
以指定的納秒數減去返回此副本。ZonedDateTime
minusSeconds(long seconds)
ZonedDateTime
以指定的秒數減去返回此副本。ZonedDateTime
minusWeeks(long weeks)
ZonedDateTime
以指定的星期數減去返回此副本。ZonedDateTime
minusYears(long years)
ZonedDateTime
以指定的年數減去返回此副本。static ZonedDateTime
now()
從默認時區的系統時鍾獲取當前日期時間。static ZonedDateTime
now(Clock clock)
從指定時鍾獲取當前日期時間。static ZonedDateTime
now(ZoneId zone)
從指定時區的系統時鍾獲取當前日期時間。static ZonedDateTime
of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneId zone)
獲取ZonedDateTime
年,月,日,時,分,秒,納秒和時區的實例。static ZonedDateTime
of(LocalDate date, LocalTime time, ZoneId zone)
獲取ZonedDateTime
當地日期和時間的實例。static ZonedDateTime
of(LocalDateTime localDateTime, ZoneId zone)
獲取ZonedDateTime
當地日期時間的實例。static ZonedDateTime
ofInstant(Instant instant, ZoneId zone)
ZonedDateTime
從一個實例中獲得一個實例Instant
。static ZonedDateTime
ofInstant(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone)
ZonedDateTime
從組合本地日期時間和偏移量所獲得的瞬間獲得一個實例。static ZonedDateTime
ofLocal(LocalDateTime localDateTime, ZoneId zone, ZoneOffset preferredOffset)
ZonedDateTime
如果可能,使用偏好的偏移量從本地日期時間獲取實例。static ZonedDateTime
ofStrict(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone)
獲取ZonedDateTime
嚴格驗證本地日期時間,偏移量和區域ID組合的實例。static ZonedDateTime
parse(CharSequence text)
ZonedDateTime
從文本字符串中獲得一個實例,如2007-12-03T10:15:30+01:00[Europe/Paris]
。static ZonedDateTime
parse(CharSequence text, DateTimeFormatter formatter)
ZonedDateTime
使用特定格式化程序從文本字符串中獲取實例。ZonedDateTime
plus(long amountToAdd, TemporalUnit unit)
返回此日期時間的副本,並添加指定的金額。ZonedDateTime
plus(TemporalAmount amountToAdd)
返回此日期時間的副本,並添加指定的金額。ZonedDateTime
plusDays(long days)
ZonedDateTime
以指定的添加天數返回此副本。ZonedDateTime
plusHours(long hours)
ZonedDateTime
以指定的小時數返回此副本。ZonedDateTime
plusMinutes(long minutes)
ZonedDateTime
以指定的分鍾數添加返回此副本。ZonedDateTime
plusMonths(long months)
ZonedDateTime
以指定的月數返回此副本。ZonedDateTime
plusNanos(long nanos)
ZonedDateTime
以指定的納秒數添加,返回此副本。ZonedDateTime
plusSeconds(long seconds)
ZonedDateTime
以指定的秒數返回此副本。ZonedDateTime
plusWeeks(long weeks)
ZonedDateTime
以指定的添加周數返回此副本。ZonedDateTime
plusYears(long years)
返回ZonedDateTime
指定年份的副本。<R> R
query(TemporalQuery<R> query)
使用指定的查詢查詢此日期時間。ValueRange
range(TemporalField field)
獲取指定字段的有效值范圍。LocalDate
toLocalDate()
獲取LocalDate
這個日期時間的一部分。LocalDateTime
toLocalDateTime()
獲取LocalDateTime
這個日期時間的一部分。LocalTime
toLocalTime()
獲取LocalTime
這個日期時間的一部分。OffsetDateTime
toOffsetDateTime()
將此日期時間轉換為OffsetDateTime
。String
toString()
將此日期時間輸出為aString
,例如2007-12-03T10:15:30+01:00[Europe/Paris]
。ZonedDateTime
truncatedTo(TemporalUnit unit)
ZonedDateTime
以截斷的時間返回此副本。long
until(Temporal endExclusive, TemporalUnit unit)
根據指定的單位計算直到另一個日期時間的時間量。ZonedDateTime
with(TemporalAdjuster adjuster)
返回此日期時間的調整副本。ZonedDateTime
with(TemporalField field, long newValue)
返回此日期時間的副本,並將指定的字段設置為新值。ZonedDateTime
withDayOfMonth(int dayOfMonth)
ZonedDateTime
在月份改變的情況下返回此副本。ZonedDateTime
withDayOfYear(int dayOfYear)
返回此ZonedDateTime
日期的副本,並更改日期。ZonedDateTime
withEarlierOffsetAtOverlap()
返回此日期時間的副本,將區域偏移更改為本地時間線重疊處的兩個有效偏移中較早的一個。ZonedDateTime
withFixedOffsetZone()
返回此日期時間的副本,並將區域ID設置為偏移量。ZonedDateTime
withHour(int hour)
ZonedDateTime
按每天的小時數更改返回此副本。ZonedDateTime
withLaterOffsetAtOverlap()
返回此日期時間的副本,將區域偏移更改為在本地時間線重疊處的兩個有效偏移中較晚的一個。ZonedDateTime
withMinute(int minute)
ZonedDateTime
按小時分鍾更改返回此副本。ZonedDateTime
withMonth(int month)
返回此ZonedDateTime
年份的復制件。ZonedDateTime
withNano(int nanoOfSecond)
ZonedDateTime
使用納秒改變來返回此副本。ZonedDateTime
withSecond(int second)
ZonedDateTime
在第二分鍾更改后返回此副本。ZonedDateTime
withYear(int year)
ZonedDateTime
在修改年份后返回此副本。ZonedDateTime
withZoneSameInstant(ZoneId zone)
使用不同的時區返回此日期時間的副本,並保留此時刻。ZonedDateTime
withZoneSameLocal(ZoneId zone)
使用不同的時區返回此日期時間的副本,並盡可能保留本地日期時間。-
從接口java.time.chrono繼承的方法。ChronoZonedDateTime
compareTo, getChronology, isAfter, isBefore, isEqual, timeLineOrder, toEpochSecond, toInstant
-
-
-
-
方法細節
-
現在
公共靜態 ZonedDateTime now()
從默認時區的系統時鍾獲取當前日期時間。這將查詢
system clock
默認時區以獲取當前日期時間。區域和偏移量將根據時鍾中的時區進行設置。使用這種方法會阻止使用備用時鍾進行測試,因為時鍾是硬編碼的。
- 返回:
- 當前使用系統時鍾的日期時間不為空
-
現在
公共靜態 ZonedDateTime 現在(ZoneId 區域)
從指定時區的系統時鍾獲取當前日期時間。這將查詢
system clock
獲取當前的日期時間。指定時區避免了對默認時區的依賴。偏移量將從指定的時區計算得出。使用這種方法會阻止使用備用時鍾進行測試,因為時鍾是硬編碼的。
- 參數:
-
zone
- 要使用的區域ID,不為null - 返回:
- 當前使用系統時鍾的日期時間不為空
-
現在
公共靜態 ZonedDateTime 現在(時鍾 鍾)
從指定時鍾獲取當前日期時間。這將查詢指定時鍾以獲取當前日期時間。區域和偏移量將根據時鍾中的時區進行設置。
使用這種方法允許使用另一個時鍾進行測試。備用時鍾可能會使用
dependency injection
。- 參數:
-
clock
- 使用的時鍾,不為空 - 返回:
- 當前的日期時間,不為空
-
的
公共靜態 ZonedDateTime 的(LOCALDATE的 日期, 本地時間 時, 了zoneid 區)
獲取ZonedDateTime
當地日期和時間的實例。這將盡可能地創建與輸入的本地日期和時間相匹配的分區日期時間。時區規則(如夏令時)意味着並非每個本地日期時間對指定區域均有效,因此可以調整本地日期時間。
本地日期時間和第一次合並形成本地日期時間。然后,本地日期時間將在時間線上解析為一個瞬間。這是通過根據
rules
區域ID 所定義的本地日期時間找到UTC /格林威治的有效偏移量來實現的。在大多數情況下,本地日期時間只有一個有效偏移量。在重疊的情況下,當時鍾恢復時,有兩個有效的偏移量。此方法使用通常對應於“夏季”的較早的偏移量。
在差距的情況下,當時鍾向前跳轉時,沒有有效的偏移量。相反,將本地日期時間調整為稍后的差距。對於典型的一小時夏令時更改,本地日期時間將在一小時后移至通常對應於“夏季”的偏移量。
- 參數:
-
date
- 本地日期,不為空 -
time
- 當地時間,不為空 -
zone
- 時區,不為空 - 返回:
- 偏移日期時間,不為空
-
的
(LocalDateTime localDateTime, ZoneId 區域)的公共靜態 ZonedDateTime
獲取ZonedDateTime
當地日期時間的實例。這會盡可能地創建與輸入本地日期時間匹配的分區日期時間。時區規則(如夏令時)意味着並非每個本地日期時間對指定區域均有效,因此可以調整本地日期時間。
本地日期時間在時間線上被解析為一個瞬間。這是通過根據
rules
區域ID 所定義的本地日期時間找到UTC /格林威治的有效偏移量來實現的。在大多數情況下,本地日期時間只有一個有效偏移量。在重疊的情況下,當時鍾恢復時,有兩個有效的偏移量。此方法使用通常對應於“夏季”的較早的偏移量。
在差距的情況下,當時鍾向前跳轉時,沒有有效的偏移量。相反,將本地日期時間調整為稍后的差距。對於典型的一小時夏令時更改,本地日期時間將在一小時后移至通常對應於“夏季”的偏移量。
- 參數:
-
localDateTime
- 本地日期時間,不為空 -
zone
- 時區,不為空 - 返回:
- 分區日期時間,不為空
-
的
公共靜態 ZonedDateTime (int年, int月份, int dayOfMonth, int小時, int分鍾, int second, int nanoOfSecond, ZoneId 區域)
獲取ZonedDateTime
年,月,日,時,分,秒,納秒和時區的實例。這將盡可能地創建與七個指定字段的本地日期時間相匹配的分區日期時間。時區規則(如夏令時)意味着並非每個本地日期時間對指定區域均有效,因此可以調整本地日期時間。
本地日期時間在時間線上被解析為一個瞬間。這是通過根據
rules
區域ID 所定義的本地日期時間找到UTC /格林威治的有效偏移量來實現的。在大多數情況下,本地日期時間只有一個有效偏移量。在重疊的情況下,當時鍾恢復時,有兩個有效的偏移量。此方法使用通常對應於“夏季”的較早的偏移量。
在差距的情況下,當時鍾向前跳轉時,沒有有效的偏移量。相反,將本地日期時間調整為稍后的差距。對於典型的一小時夏令時更改,本地日期時間將在一小時后移至通常對應於“夏季”的偏移量。
此方法主要用於編寫測試用例。非測試代碼通常會使用其他方法來創建偏移時間。
LocalDateTime
有五個額外的方便變體等價的工廠方法,參數較少。這里沒有提供它們來減少API的占用空間。- 參數:
-
year
- 表示從MIN_YEAR到MAX_YEAR的年份 -
month
- 從1月(1月)到12月(12月)的月份 -
dayOfMonth
- 從1日到31日的月份 -
hour
- 從0到23代表每小時的時間 -
minute
- 從0到59代表分鍾的小時數 -
second
- 從0到59代表第二個分鍾 -
nanoOfSecond
- 從0到999,999,999代表納秒級 -
zone
- 時區,不為空 - 返回:
- 偏移日期時間,不為空
- 拋出:
-
DateTimeException
- 如果任何字段的值超出范圍,或者月份的月份對該月份無效
-
ofLocal
公共靜態 ZonedDateTime ofLocal(LocalDateTime localDateTime, ZoneId 區域, ZoneOffset preferredOffset)
ZonedDateTime
如果可能,使用偏好的偏移量從本地日期時間獲取實例。本地日期時間在時間線上被解析為一個瞬間。這是通過根據
rules
區域ID 所定義的本地日期時間找到UTC /格林威治的有效偏移量來實現的。在大多數情況下,本地日期時間只有一個有效偏移量。在時鍾重新設置的情況下,有兩個有效的偏移量。如果首選偏移量是有效偏移量之一,則使用它。否則使用較早的有效偏移量,通常對應於“夏季”。
在時鍾向前跳轉的情況下,沒有有效的偏移量。相反,將本地日期時間調整為稍后的差距。對於典型的一小時夏令時更改,本地日期時間將在一小時后移至通常對應於“夏季”的偏移量。
- 參數:
-
localDateTime
- 本地日期時間,不為空 -
zone
- 時區,不為空 -
preferredOffset
- 區域偏移量,如果沒有首選項,則為null - 返回:
- 分區日期時間,不為空
-
ofInstant
公共靜態 ZonedDateTime ofInstant(即時 即時, ZoneId 區域)
ZonedDateTime
從一個實例中獲得一個實例Instant
。這將創建一個與指定時間相同的分區日期時間。呼叫
ChronoZonedDateTime.toInstant()
將返回與此處使用的相同的時刻。將瞬間轉換為分區日期時間非常簡單,因為每個時刻只有一個有效偏移量。
- 參數:
-
instant
- 從非null創建日期時間的時刻 -
zone
- 時區,不為空 - 返回:
- 分區日期時間,不為空
- 拋出:
-
DateTimeException
- 如果結果超出支持的范圍
-
ofInstant
公共靜態 ZonedDateTime ofInstant(LocalDateTime localDateTime, ZoneOffset 偏移量, ZoneId 區域)
ZonedDateTime
從組合本地日期時間和偏移量所獲得的瞬間獲得一個實例。這將創建一個分區的日期時間
combining
的LocalDateTime
和ZoneOffset
。這種組合唯一地指定了一個沒有歧義的時刻。將瞬間轉換為分區日期時間非常簡單,因為每個時刻只有一個有效偏移量。如果有效偏移量與指定偏移量不同,則划分日期時間的日期時間和偏移量將與指定的不同。
如果
ZoneId
要使用的是aZoneOffset
,則此方法等同於of(LocalDateTime, ZoneId)
。- 參數:
-
localDateTime
- 本地日期時間,不為空 -
offset
- 區域偏移量,不為空 -
zone
- 時區,不為空 - 返回:
- 分區日期時間,不為空
-
ofStrict
公共靜態 ZonedDateTime ofStrict(LocalDateTime localDateTime, ZoneOffset 偏移量, ZoneId 區域)
獲取ZonedDateTime
嚴格驗證本地日期時間,偏移量和區域ID組合的實例。這會根據指定區域的規則創建分區日期時間,以確保偏移對本地日期時間有效。如果偏移量無效,則拋出異常。
- 參數:
-
localDateTime
- 本地日期時間,不為空 -
offset
- 區域偏移量,不為空 -
zone
- 時區,不為空 - 返回:
- 分區日期時間,不為空
-
從
公共靜態 ZonedDateTime 來自(TemporalAccessor temporal)
ZonedDateTime
從一個時間對象中獲得一個實例。這將根據指定的時間獲取分區日期時間。A
TemporalAccessor
表示一組任意的日期和時間信息,該工廠將其轉換為一個實例ZonedDateTime
。該轉換將首先
ZoneId
從時間對象中獲得一個,ZoneOffset
如果需要的話,將轉換回來。然后它會嘗試獲得一個Instant
,LocalDateTime
如果有必要的話,會回落。結果將是ZoneId
或ZoneOffset
與Instant
或的組合LocalDateTime
。允許實現執行優化,例如訪問與相關對象等效的那些字段。該方法匹配功能接口的簽名,
TemporalQuery
允許通過方法引用將其用作查詢ZonedDateTime::from
。- 指定者:
-
from
在界面中ChronoZonedDateTime<LocalDate>
- 參數:
-
temporal
- 要轉換的時間對象,不為null - 返回:
- 分區日期時間,不為空
- 拋出:
-
DateTimeException
- 如果無法轉換為ZonedDateTime
- 也可以看看:
-
Chronology.zonedDateTime(TemporalAccessor)
-
解析
公共靜態 ZonedDateTime 解析(CharSequence 文本)
ZonedDateTime
從文本字符串中獲得一個實例,如2007-12-03T10:15:30+01:00[Europe/Paris]
。該字符串必須表示一個有效的日期時間,並使用該語法進行分析
DateTimeFormatter.ISO_ZONED_DATE_TIME
。- 參數:
-
text
- 要解析的文本,例如“2007-12-03T10:15:30 + 01:00 [Europe / Paris]”,not null - 返回:
- 解析后的分區日期時間不為空
- 拋出:
-
DateTimeParseException
- 如果文本不能被解析
-
解析
公共靜態 ZonedDateTime 解析(CharSequence 文本, DateTimeFormatter 格式化程序)
ZonedDateTime
使用特定格式化程序從文本字符串中獲取實例。文本使用格式化程序進行分析,返回日期時間。
- 參數:
-
text
- 要解析的文本,不為空 -
formatter
- 要使用的格式化程序,不為null - 返回:
- 解析后的分區日期時間不為空
- 拋出:
-
DateTimeParseException
- 如果文本不能被解析
-
則isSupported
public boolean isSupported(TemporalField field)
檢查指定的字段是否受支持。這將檢查是否可以查詢指定字段的日期時間。如果是假,然后調用
range
,get
並且with(TemporalField, long)
方法會拋出異常。如果該字段是a,
ChronoField
則在此處執行查詢。支持的字段是:NANO_OF_SECOND
NANO_OF_DAY
MICRO_OF_SECOND
MICRO_OF_DAY
MILLI_OF_SECOND
MILLI_OF_DAY
SECOND_OF_MINUTE
SECOND_OF_DAY
MINUTE_OF_HOUR
MINUTE_OF_DAY
HOUR_OF_AMPM
CLOCK_HOUR_OF_AMPM
HOUR_OF_DAY
CLOCK_HOUR_OF_DAY
AMPM_OF_DAY
DAY_OF_WEEK
ALIGNED_DAY_OF_WEEK_IN_MONTH
ALIGNED_DAY_OF_WEEK_IN_YEAR
DAY_OF_MONTH
DAY_OF_YEAR
EPOCH_DAY
ALIGNED_WEEK_OF_MONTH
ALIGNED_WEEK_OF_YEAR
MONTH_OF_YEAR
PROLEPTIC_MONTH
YEAR_OF_ERA
YEAR
ERA
INSTANT_SECONDS
OFFSET_SECONDS
ChronoField
實例將返回false。如果該字段不是a
ChronoField
,則通過調用TemporalField.isSupportedBy(TemporalAccessor)
傳遞this
作為參數來獲得此方法的結果。該領域是否得到支持取決於該領域。- 指定者:
-
isSupported
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
isSupported
在界面中TemporalAccessor
- 參數:
-
field
- 要檢查的字段,null返回false - 返回:
- 如果此日期時間支持此字段,則為true,否則為false
-
則isSupported
public boolean isSupported(TemporalUnit unit)
檢查指定的單位是否受支持。這將檢查指定的單位是否可以添加到此日期或從中減去。如果為false,則調用
plus(long, TemporalUnit)
andminus
方法將拋出異常。如果單位是一個,
ChronoUnit
那么在這里執行查詢。支持的單位是:NANOS
MICROS
MILLIS
SECONDS
MINUTES
HOURS
HALF_DAYS
DAYS
WEEKS
MONTHS
YEARS
DECADES
CENTURIES
MILLENNIA
ERAS
ChronoUnit
實例將返回false。如果單位不是a
ChronoUnit
,則通過調用TemporalUnit.isSupportedBy(Temporal)
傳遞this
作為參數來獲得此方法的結果。單位是否受支持取決於單位。- 指定者:
-
isSupported
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
isSupported
在界面中Temporal
- 參數:
-
unit
- 要檢查的單位,null返回false - 返回:
- 如果可以添加/減去單位,則返回true,否則返回false
-
范圍
公共 ValueRange 范圍(TemporalField 字段)
獲取指定字段的有效值范圍。范圍對象表示字段的最小和最大有效值。此日期時間用於增強返回范圍的准確性。如果無法返回范圍,由於該字段不受支持或出於某種其他原因,會引發異常。
如果該字段是a,
ChronoField
則在此處執行查詢。該supported fields
將返回適當的范圍實例。所有其他ChronoField
實例將拋出一個UnsupportedTemporalTypeException
。如果該字段不是a
ChronoField
,則通過調用TemporalField.rangeRefinedBy(TemporalAccessor)
傳遞this
作為參數來獲得此方法的結果。范圍是否可以取得是由現場決定的。- 指定者:
-
range
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
range
在界面中TemporalAccessor
- 參數:
-
field
- 查詢范圍的字段不為null - 返回:
- 該字段的有效值范圍不為空
- 拋出:
-
DateTimeException
- 如果無法獲得該字段的范圍 -
UnsupportedTemporalTypeException
- 如果該字段不受支持
-
得到
public int get(TemporalField field)
從該日期時間獲取指定字段的值作為int
。這會查詢此日期時間以獲取指定字段的值。返回值將始終在該字段的有效值范圍內。如果無法返回該值,因為該字段不受支持或出於某種其他原因,會引發異常。
如果該字段是a,
ChronoField
則在此處執行查詢。該supported fields
會返回基於此日期時間有效值,除了NANO_OF_DAY
,MICRO_OF_DAY
,EPOCH_DAY
,PROLEPTIC_MONTH
和INSTANT_SECONDS
它是太大,無法在int
和拋出DateTimeException
。所有其他ChronoField
實例將拋出一個UnsupportedTemporalTypeException
。如果該字段不是a
ChronoField
,則通過調用TemporalField.getFrom(TemporalAccessor)
傳遞this
作為參數來獲得此方法的結果。該值是否可以獲得,以及該值代表什么,由該領域決定。- 指定者:
-
get
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
get
在界面中TemporalAccessor
- 參數:
-
field
- 要獲取的字段,而不是null - 返回:
- 該字段的值
- 拋出:
-
DateTimeException
- 如果無法獲取該字段的值或該值超出該字段的有效值范圍 -
UnsupportedTemporalTypeException
- 如果該字段不受支持或值的范圍超過int
-
ArithmeticException
- 如果數字溢出發生
-
getLong
public long getLong(TemporalField 字段)
從該日期時間獲取指定字段的值作為along
。這會查詢此日期時間以獲取指定字段的值。如果無法返回該值,因為該字段不受支持或出於某種其他原因,會引發異常。
如果該字段是a,
ChronoField
則在此處執行查詢。該supported fields
會根據此日期時間返回有效值。所有其他ChronoField
實例將拋出一個UnsupportedTemporalTypeException
。如果該字段不是a
ChronoField
,則通過調用TemporalField.getFrom(TemporalAccessor)
傳遞this
作為參數來獲得此方法的結果。該值是否可以獲得,以及該值代表什么,由該領域決定。- 指定者:
-
getLong
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
getLong
在界面中TemporalAccessor
- 參數:
-
field
- 要獲取的字段,而不是null - 返回:
- 該字段的值
- 拋出:
-
DateTimeException
- 如果無法獲得該字段的值 -
UnsupportedTemporalTypeException
- 如果該字段不受支持 -
ArithmeticException
- 如果數字溢出發生
-
的getOffset
public ZoneOffset getOffset()
獲取區域偏移量,例如'+01:00'。這是UTC /格林威治當地日期時間的偏移量。
- 指定者:
-
getOffset
在界面中ChronoZonedDateTime<LocalDate>
- 返回:
- 區域偏移量不為空
-
withEarlierOffsetAtOverlap
public ZonedDateTime withEarlierOffsetAtOverlap()
返回此日期時間的副本,將區域偏移更改為本地時間線重疊處的兩個有效偏移中較早的一個。當本地時間線重疊時,例如在秋季夏令時切換時,此方法僅具有任何效果。在這種情況下,本地日期時間有兩個有效的偏移量。調用此方法將返回一個分區日期時間與選定的兩個中較早的時間。
如果此方法在不重疊時被調用,
this
則返回。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
withEarlierOffsetAtOverlap
在界面中ChronoZonedDateTime<LocalDate>
- 返回:
-
一個
ZonedDateTime
基於此日期,時間與先前的偏移,不為空
-
withLaterOffsetAtOverlap
公共 ZonedDateTime withLaterOffsetAtOverlap()
返回此日期時間的副本,將區域偏移更改為在本地時間線重疊處的兩個有效偏移中較晚的一個。當本地時間線重疊時,例如在秋季夏令時切換時,此方法僅具有任何效果。在這種情況下,本地日期時間有兩個有效的偏移量。調用此方法將返回一個分區日期時間與所選兩個中的后一個。
如果此方法在不重疊時被調用,
this
則返回。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
withLaterOffsetAtOverlap
在界面中ChronoZonedDateTime<LocalDate>
- 返回:
-
一個
ZonedDateTime
基於此日期,時間與后來的偏移,不為空
-
getZone
public ZoneId getZone()
獲取時區,如“歐洲/巴黎”。這將返回區域ID。這確定了
rules
確定何時以及如何與UTC /格林威治的偏差發生變化的時區。區域ID可能與偏移相同。如果這是真的,則任何未來的計算(例如加法或減法)都不會由於時區規則而導致復雜的邊緣情況。另見
withFixedOffsetZone()
。- 指定者:
-
getZone
在界面中ChronoZonedDateTime<LocalDate>
- 返回:
- 時區,而不是空
-
withZoneSameLocal
公共 ZonedDateTime withZoneSameLocal(ZoneId 區域)
使用不同的時區返回此日期時間的副本,並盡可能保留本地日期時間。此方法更改時區並保留本地日期時間。只有當本地日期時間對新區域無效時才會更改,使用與之相同的方法確定
ofLocal(LocalDateTime, ZoneId, ZoneOffset)
。要更改區域並調整本地日期時間,請使用
withZoneSameInstant(ZoneId)
。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
withZoneSameLocal
在界面中ChronoZonedDateTime<LocalDate>
- 參數:
-
zone
- 要更改為的時區,而不是空 - 返回:
-
一個
ZonedDateTime
基於這個日期時間與請求的區域,不為空
-
withZoneSameInstant
公共 ZonedDateTime withZoneSameInstant(ZoneId 區域)
使用不同的時區返回此日期時間的副本,並保留此時刻。此方法更改時區並保留時間。這通常會導致當地日期時間的更改。
此方法基於保留相同的時刻,因此本地時間線中的間隙和重疊對結果沒有影響。
要在保持當地時間的情況下更改偏移量,請使用
withZoneSameLocal(ZoneId)
。- 指定者:
-
withZoneSameInstant
在界面中ChronoZonedDateTime<LocalDate>
- 參數:
-
zone
- 要更改為的時區,而不是空 - 返回:
-
一個
ZonedDateTime
基於這個日期時間與請求的區域,不為空 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
withFixedOffsetZone
public ZonedDateTime withFixedOffsetZone()
返回此日期時間的副本,並將區域ID設置為偏移量。這會返回區域ID與區域ID相同的區域日期時間
getOffset()
。結果的本地日期時間,偏移量和瞬間將與此日期時間相同。將日期時間設置為固定的單個偏移量意味着未來的任何計算(例如加法或減法)都不會因時區規則而導致復雜的邊緣情況。由於大多數協議(如ISO-8601)僅處理偏移量,而不是基於區域的區域ID,因此在通過網絡發送分區日期時間時可能也很有用。
這相當於
ZonedDateTime.of(zdt.toLocalDateTime(), zdt.getOffset())
。- 返回:
-
a
ZonedDateTime
區域ID設置為偏移量,不為空
-
toLocalDateTime
public LocalDateTime toLocalDateTime()
獲取LocalDateTime
這個日期時間的一部分。這會返回
LocalDateTime
與此日期時間相同的年份,月份,日期和時間。- 指定者:
-
toLocalDateTime
在界面中ChronoZonedDateTime<LocalDate>
- 返回:
- 此日期時間的本地日期時間部分,不為空
-
toLocalDate
public LocalDate toLocalDate()
獲取LocalDate
這個日期時間的一部分。這會返回
LocalDate
與此日期時間相同的年份,月份和日期。- 指定者:
-
toLocalDate
在界面中ChronoZonedDateTime<LocalDate>
- 返回:
- 此日期時間的日期部分,不為空
-
得到年
public int getYear()
獲取年份字段。此方法返回
int
年份的原始值。這種方法返回的年份是按照每種方式預測的
get(YEAR)
。要獲得年代,請使用get(YEAR_OF_ERA)
。- 返回:
- 年份,從MIN_YEAR到MAX_YEAR
-
getMonthValue
public int getMonthValue()
獲取從1到12的月份字段。此方法返回
int
1到12 的月份。如果Month
通過調用使用枚舉,則應用程序代碼通常會更清晰getMonth()
。- 返回:
- 從1到12的月份
- 也可以看看:
-
getMonth()
-
得到月
public Month getMonth()
- 返回:
- 一年的月份,不是空的
- 也可以看看:
-
getMonthValue()
-
getDayOfMonth
public int getDayOfMonth()
獲取日期字段。此方法返回
int
月份的原始值。- 返回:
- 從1日到31日的月份
-
getDayOfYear
public int getDayOfYear()
獲得一年中的一個領域。此方法返回
int
一年中的原始值。- 返回:
- 在閏年中從1到365或366
-
getDayOfWeek
public DayOfWeek getDayOfWeek()
獲取星期幾字段,這是一個枚舉DayOfWeek
。此方法返回
DayOfWeek
星期幾的枚舉。這避免了對於什么int
值意味着混淆。如果你需要訪問原始int
值,那么枚舉提供int value
。其他信息可以從中獲得
DayOfWeek
。這包括值的文本名稱。- 返回:
- 星期幾,非空
-
toLocalTime
公共 本地時間 toLocalTime()
獲取LocalTime
這個日期時間的一部分。這會返回
LocalTime
與此日期時間相同的小時,分鍾,秒和納秒。- 指定者:
-
toLocalTime
在界面中ChronoZonedDateTime<LocalDate>
- 返回:
- 此日期時間的部分時間不為空
-
getHour
public int getHour()
獲取一天中的時間字段。- 返回:
- 一天中的時間從0到23
-
getMinute
public int getMinute()
獲取分鍾的字段。- 返回:
- 小時,從0到59
-
getSecond
public int getSecond()
獲取第二分鍾的字段。- 返回:
- 第二分鍾,從0到59
-
getNano
public int getNano()
獲取納秒級字段。- 返回:
- 納秒級,從0到999,999,999
-
同
公共 ZonedDateTime (TemporalAdjuster 調節器)
返回此日期時間的調整副本。ZonedDateTime
基於 這個返回一個日期 - 時間調整。調整使用指定的調整策略對象進行。閱讀調節器的文檔以了解將做出什么調整。一個簡單的調節器可以簡單地設置其中一個字段,例如年份字段。一個更復雜的調整者可能會將該日期設置為該月的最后一天。提供了一些常用調整
TemporalAdjusters
。這些包括找到“每月的最后一天”和“下周三”。關鍵日期 - 時間類還實現了TemporalAdjuster
接口,如Month
和MonthDay
。調解員負責處理特殊情況,例如月份和閏年的變化長度。例如,這段代碼在7月的最后一天返回一個日期:
import static java.time.Month。*; import static java.time.temporal.TemporalAdjusters。*; result = zonedDateTime.with(JULY).with(lastDayOfMonth());
類
LocalDate
和LocalTime
實現TemporalAdjuster
,因此這個方法可以用來更改日期,時間或偏移:result = zonedDateTime.with(date); result = zonedDateTime.with(time);
ZoneOffset
也實現,TemporalAdjuster
但是使用它作為參數通常沒有效果。a的偏移ZonedDateTime
主要由時區控制。因此,更改偏移量通常並不合理,因為本地日期時間和區域只有一個有效偏移量。如果分區日期時間處於夏時制重疊狀態,則使用該偏移量在兩個有效偏移量之間切換。在所有其他情況下,偏移量將被忽略。該方法的結果是通過調用
TemporalAdjuster.adjustInto(Temporal)
指定調整器的 方法this
作為參數來獲得的。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
with
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
with
在界面中Temporal
- 參數:
-
adjuster
- 使用的調整器,不為null - 返回:
-
一個
ZonedDateTime
基於this
與制造,不為空調整 - 拋出:
-
DateTimeException
- 如果無法進行調整 -
ArithmeticException
- 如果數字溢出發生
-
同
公共 ZonedDateTime 與(TemporalField 字段, 長的newValue)
返回此日期時間的副本,並將指定的字段設置為新值。這將返回一個
ZonedDateTime
基於此值的指定字段的值已更改。這可用於更改任何支持的字段,例如年,月或日期。如果無法設置該值,因為該字段不受支持或出於其他原因,將引發異常。在某些情況下,更改指定的字段會導致生成的日期時間失效,例如將月份從1月31日更改為2月份會使月份的日期無效。在這種情況下,該字段負責解決日期。通常它會選擇以前的有效日期,這將是本示例中2月份的最后一個有效日期。
如果該字段是a,
ChronoField
則在此執行調整。該
INSTANT_SECONDS
字段將返回具有指定時間的日期時間。該區和納秒級不變。結果將有一個從新的瞬間和原始區域派生的偏移量。如果新的瞬時值超出有效范圍,DateTimeException
則會拋出a。該
OFFSET_SECONDS
字段通常會被忽略。a的偏移ZonedDateTime
主要由時區控制。因此,更改偏移量通常並不合理,因為本地日期時間和區域只有一個有效偏移量。如果分區日期時間處於夏時制重疊狀態,則使用該偏移量在兩個有效偏移量之間切換。在所有其他情況下,偏移量將被忽略。如果新的偏移值超出有效范圍,DateTimeException
則會拋出a。另一個
supported fields
將按照上的匹配方法行事LocalDateTime
。該區域不是計算的一部分,將保持不變。在轉換回時ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。所有其他
ChronoField
實例將拋出一個UnsupportedTemporalTypeException
。如果該字段不是a
ChronoField
,則通過調用TemporalField.adjustInto(Temporal, long)
傳遞this
作為參數來獲得此方法的結果。在這種情況下,該字段確定是否以及如何調整時刻。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
with
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
with
在界面中Temporal
- 參數:
-
field
- 在結果中設置的字段不為空 -
newValue
- 結果中字段的新值 - 返回:
-
一個
ZonedDateTime
基於this
使用指定的字段設置,不為空 - 拋出:
-
DateTimeException
- 如果該字段不能設置 -
UnsupportedTemporalTypeException
- 如果該字段不受支持 -
ArithmeticException
- 如果數字溢出發生
-
withYear
public ZonedDateTime withYear(int year)
ZonedDateTime
在修改年份后返回此副本。這在本地時間線上運行,
changing the year
當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
year
- 結果中設置的年份,從MIN_YEAR到MAX_YEAR - 返回:
-
一個
ZonedDateTime
基於這個日期時間與請求的一年,不為空 - 拋出:
-
DateTimeException
- 如果年份值無效
-
withMonth
public ZonedDateTime withMonth(int month)
返回此ZonedDateTime
年份的復制件。這在本地時間線上運行,
changing the month
當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
month
- 從1月(1月)到12月(12月)的結果中設定的月份 - 返回:
-
一個
ZonedDateTime
基於這個日期時間與請求的一個月,不為空 - 拋出:
-
DateTimeException
- 如果月份的年份值無效
-
withDayOfMonth
public ZonedDateTime withDayOfMonth(int dayOfMonth)
ZonedDateTime
在月份改變的情況下返回此副本。這在本地時間線上運行,
changing the day-of-month
當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
dayOfMonth
- 結果中的月份日期,從1到28-31 - 返回:
-
一個
ZonedDateTime
基於這個日期時間與請求的天,不為空 - 拋出:
-
DateTimeException
- 如果月份的日期值無效,或者月份的月份對該月份無效
-
withDayOfYear
public ZonedDateTime withDayOfYear(int dayOfYear)
返回此ZonedDateTime
日期的副本,並更改日期。這在本地時間線上運行,
changing the day-of-year
當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
dayOfYear
- 從1到365-366之間的結果中設置的日期 - 返回:
-
一個
ZonedDateTime
基於此日期與所請求的天,不為空 - 拋出:
-
DateTimeException
- 如果日期價值無效,或年度日期無效
-
withHour
public ZonedDateTime withHour(int hour)
ZonedDateTime
按每天的小時數更改返回此副本。這在當地時間線上運行, 改變當地日期時間。然后將其轉換回a
ZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
hour
- 從0到23的結果中設置的小時數 - 返回:
-
一個
ZonedDateTime
基於這個日期時間與請求小時,不為空 - 拋出:
-
DateTimeException
- 如果小時值無效
-
withMinute
public ZonedDateTime withMinute(int minute)
ZonedDateTime
按小時分鍾更改返回此副本。這在當地時間線上運行, 改變當地日期時間。然后將其轉換回a
ZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
minute
- 從0到59的結果中設置的分鍾數 - 返回:
-
一個
ZonedDateTime
基於這個日期時間與請求分鍾,不為空 - 拋出:
-
DateTimeException
- 如果分鍾值無效
-
withSecond
public ZonedDateTime withSecond(int second)
ZonedDateTime
在第二分鍾更改后返回此副本。這在當地時間線上運行, 改變當地日期時間。然后將其轉換回a
ZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
second
- 第二分鍾設置結果,從0到59 - 返回:
-
一個
ZonedDateTime
基於這個日期時間與請求第二,不為空 - 拋出:
-
DateTimeException
- 如果第二個值無效
-
withNano
public ZonedDateTime withNano(int nanoOfSecond)
ZonedDateTime
使用納秒改變來返回此副本。這在當地時間線上運行, 改變當地日期時間。然后將其轉換回a
ZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
nanoOfSecond
- 在結果中設置的納秒級,從0到999,999,999 - 返回:
-
一個
ZonedDateTime
基於這個日期時間與請求納秒,不為空 - 拋出:
-
DateTimeException
- 如果納米值無效
-
truncatedTo
public ZonedDateTime truncatedTo(TemporalUnit unit)
ZonedDateTime
以截斷的時間返回此副本。截斷返回原始日期時間的副本,其字段小於指定的單位,設置為零。例如,用
minutes
單位截斷將把秒鍾和納秒級的字段設置為零。該單位必須有一個持續時間 ,分為標准日的長度而沒有剩余時間。這包括所有提供的時間單位
ChronoUnit
和DAYS
。其他單位拋出異常。這在當地時間線上執行,
truncating
即當地的日期 - 時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
unit
- 要截斷的單位,不為null - 返回:
-
一個
ZonedDateTime
基於此日期,時間與時間截斷,不為空 - 拋出:
-
DateTimeException
- 如果無法截斷 -
UnsupportedTemporalTypeException
- 如果設備不受支持
-
加
公共 ZonedDateTime 加(TemporalAmount amountToAdd)
返回此日期時間的副本,並添加指定的金額。這將返回一個
ZonedDateTime
基於此值的已添加的指定數量。金額通常Period
或Duration
可能是實現TemporalAmount
接口的任何其他類型。計算通過調用委托給金額對象
TemporalAmount.addTo(Temporal)
。數量實現可以以任何希望的方式自由實現添加,但通常會回調plus(long, TemporalUnit)
。請查閱金額實施文件以確定是否可以成功添加。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
plus
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
plus
在界面中Temporal
- 參數:
-
amountToAdd
- 要添加的金額,不為空 - 返回:
-
一個
ZonedDateTime
基於這個日期和時間的添加,不是null - 拋出:
-
DateTimeException
- 如果不能添加 -
ArithmeticException
- 如果數字溢出發生
-
加
公共 ZonedDateTime 加(long amountToAdd, TemporalUnit 單位)
返回此日期時間的副本,並添加指定的金額。ZonedDateTime
基於 此,返回一個以所添加單位為單位的金額。如果無法添加金額,由於該單位不受支持或出於其他原因,會引發異常。如果字段是a,
ChronoUnit
那么在這里實現添加。該區域不是計算的一部分,在結果中將保持不變。日期和時間單位的計算有所不同。日期單位在當地時間線上運行。該時間段首先添加到本地日期時間,然后使用區域ID轉換回划分的日期時間。該轉換
ofLocal(LocalDateTime, ZoneId, ZoneOffset)
在添加之前與偏移一起使用。時間單位在即時時間線上運行。該時間段首先添加到本地日期時間,然后使用區域ID轉換回划分的日期時間。該轉換
ofInstant(LocalDateTime, ZoneOffset, ZoneId)
在添加之前與偏移一起使用。如果該字段不是a
ChronoUnit
,則通過調用TemporalUnit.addTo(Temporal, long)
傳遞this
作為參數來獲得此方法的結果。在這種情況下,本機將確定是否以及如何執行添加。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
plus
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
plus
在界面中Temporal
- 參數:
-
amountToAdd
- 要添加到結果中的單位數量可能為負數 -
unit
- 要添加的金額單位,不為空 - 返回:
-
一個
ZonedDateTime
基於此日期,時間與規定的添加量,沒有空 - 拋出:
-
DateTimeException
- 如果不能添加 -
UnsupportedTemporalTypeException
- 如果設備不受支持 -
ArithmeticException
- 如果數字溢出發生
-
plusYears
公共 ZonedDateTime plus年(長年)
返回ZonedDateTime
指定年份的副本。這在當地時間線上運行
adding years
到當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
years
- 增加的年份可能是負面的 - 返回:
-
一個
ZonedDateTime
基於與年增加,不為空這個日期時間 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
plusMonths
公共 ZonedDateTime plusMonths(長月)
ZonedDateTime
以指定的月數返回此副本。這在當地時間線上運行
adding months
到當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
months
- 增加的幾個月可能是負面的 - 返回:
-
一個
ZonedDateTime
基於與幾個月增加,不為空這個日期時間 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
plusWeeks
公共 ZonedDateTime plusWeeks(長周)
ZonedDateTime
以指定的添加周數返回此副本。這在當地時間線上運行
adding weeks
到當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
weeks
- 增加的幾周可能是負面的 - 返回:
-
一個
ZonedDateTime
基於與周增加,不為空這個日期時間 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
plusDays
公共 ZonedDateTime plusDays(長天)
ZonedDateTime
以指定的添加天數返回此副本。這在當地時間線上運行
adding days
到當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
days
- 增加的日子可能是消極的 - 返回:
-
一個
ZonedDateTime
基於這個日期和時間添加的日子,不是空的 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
plusHours
公共 ZonedDateTime plusHours(長時間)
ZonedDateTime
以指定的小時數返回此副本。這在現時的時間線上運行,使得增加一個小時將總是一小時后的持續時間。這可能導致本地日期 - 時間改變不是一個小時。請注意,這是與日,月和年使用的方法不同的方法,因此添加一天與添加24小時不同。
例如,考慮春季DST切換意味着當地時間01:00至01:59發生兩次從偏移量+02:00變為+01:00的時區。
- 在00:30 + 02:00加1小時將導致01:30 + 02:00
- 在01:30 + 02:00加1小時將導致01:30 + 01:00
- 將1小時加入01:30 + 01:00將導致02:30 + 01:00
- 在00:30 + 02:00加上三個小時將導致02:30 + 01:00
這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
hours
- 要添加的時間可能是負面的 - 返回:
-
一個
ZonedDateTime
基於這個日期和時間添加的時間,不是null - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
plusMinutes
公共 ZonedDateTime plusMinutes(長時間)
ZonedDateTime
以指定的分鍾數添加返回此副本。這在即時時間線上運行,使得增加一分鍾將總是一分鍾后的持續時間。這可能會導致本地日期時間改變一分鍾以外的金額。請注意,這是與日,月和年使用的方法不同的方法。
這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
minutes
- 要添加的分鍾數可能是負數 - 返回:
-
一個
ZonedDateTime
基於與分鍾內添加,不為空這個日期時間 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
plusSeconds
公共 ZonedDateTime plusSeconds(長秒)
ZonedDateTime
以指定的秒數返回此副本。這在當前的時間線上運行,使得增加一秒將總是一秒鍾的持續時間。這可能導致本地日期 - 時間改變一秒以外的量。請注意,這是與日,月和年使用的方法不同的方法。
這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
seconds
- 添加的秒數可能是負值 - 返回:
-
一個
ZonedDateTime
基於與秒添加,不為空這個日期時間 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
plusNanos
公共 ZonedDateTime plusNanos(長納米)
ZonedDateTime
以指定的納秒數添加,返回此副本。這是在即時時間線上運行的,因此添加一個納米將始終是一納米之后的持續時間。這可能會導致本地日期時間改變一個納米以外的量。請注意,這是與日,月和年使用的方法不同的方法。
這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
nanos
- 納米添加,可能是負面的 - 返回:
-
一個
ZonedDateTime
基於與納秒增加,不為空這個日期時間 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
減去
公共 ZonedDateTime 減去(TemporalAmount amountToSubtract)
返回此日期時間的副本,並減去指定的金額。這將返回一個
ZonedDateTime
基於此值的指定金額減去。金額通常Period
或Duration
可能是實現TemporalAmount
接口的任何其他類型。計算通過調用委托給金額對象
TemporalAmount.subtractFrom(Temporal)
。數量實現可以自由地以任何希望的方式實現減法,但通常會調回minus(long, TemporalUnit)
。請查閱金額實施文件以確定是否可以成功扣除。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
minus
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
minus
在界面中Temporal
- 參數:
-
amountToSubtract
- 減去的金額,不為空 - 返回:
-
一個
ZonedDateTime
基於這個日期 - 時間的減法,不是null - 拋出:
-
DateTimeException
- 如果不能進行減法 -
ArithmeticException
- 如果數字溢出發生
-
減去
public ZonedDateTime 減去(long amountToSubtract, TemporalUnit 單位)
返回此日期時間的副本,並減去指定的金額。這將
ZonedDateTime
基於這個返回一個減去單位的金額。如果無法減去金額,由於該單位不受支持或出於其他原因,會引發異常。日期和時間單位的計算有所不同。
日期單位在當地時間線上運行。首先從本地日期時間中減去該時間段,然后使用區域ID將其轉換回分區日期時間。轉換使用
ofLocal(LocalDateTime, ZoneId, ZoneOffset)
減法之前的偏移量。時間單位在即時時間線上運行。首先從本地日期時間中減去該時間段,然后使用區域ID將其轉換回分區日期時間。轉換使用
ofInstant(LocalDateTime, ZoneOffset, ZoneId)
減法之前的偏移量。這種方法相當於
plus(long, TemporalUnit)
取消金額。請參閱該方法以獲取加法和減法如何工作的完整說明。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
minus
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
minus
在界面中Temporal
- 參數:
-
amountToSubtract
- 從結果中減去單位的數量,可能是負數 -
unit
- 要減去的金額單位,不為空 - 返回:
-
一個
ZonedDateTime
基於這個日期時間與指定的金額中扣除,不為空 - 拋出:
-
DateTimeException
- 如果不能進行減法 -
UnsupportedTemporalTypeException
- 如果設備不受支持 -
ArithmeticException
- 如果數字溢出發生
-
minusYears
公共 ZonedDateTime minus年(長年)
ZonedDateTime
以指定的年數減去返回此副本。這在當地時間線上運行
subtracting years
到當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
years
- 減去的年份可能是負值 - 返回:
-
一個
ZonedDateTime
基於這個日期時間隨着年齡的增長減去,不為空 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
minusMonths
公共 ZonedDateTime minusMonths(長月)
以ZonedDateTime
減去指定的月數返回此副本。這在當地時間線上運行
subtracting months
到當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
months
- 減去的月份可能是負值 - 返回:
-
一個
ZonedDateTime
基於此日期,時間與月相減,不為空 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
minusWeeks
公共 ZonedDateTime minusWeeks(長周)
ZonedDateTime
以指定的星期數減去返回此副本。這在當地時間線上運行
subtracting weeks
到當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
weeks
- 減去的周數可能是負值 - 返回:
-
一個
ZonedDateTime
基於此日期,時間與周中減去,不為空 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
minusDays
公共 ZonedDateTime minusDays(長天)
ZonedDateTime
以指定的天數減去返回此副本。這在當地時間線上運行
subtracting days
到當地日期時間。然后將其轉換回aZonedDateTime
,使用區域ID獲取偏移量。在轉換回時
ZonedDateTime
,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
days
- 減去的日子可能是負面的 - 返回:
-
一個
ZonedDateTime
基於此日期,時間與天相減,不為空 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
minusHours
公共 ZonedDateTime minusHours(長時間)
ZonedDateTime
以指定的小時數減去返回此副本。這在即時時間線上運行,使得減去一小時將總是一小時前的持續時間。這可能導致本地日期 - 時間改變不是一個小時。請注意,這是與日,月和年使用的方法不同的方法,因此扣除一天不等於增加24小時。
例如,考慮春季DST切換意味着當地時間01:00至01:59發生兩次從偏移量+02:00變為+01:00的時區。
- 從02:30 + 01:00減去1小時將導致01:30 + 02:00
- 從01:30 + 01:00減去1小時將導致01:30 + 02:00
- 從01:30 + 02:00減去1小時將導致00:30 + 01:00
- 從02:30 + 01:00減去3小時將導致00:30 + 02:00
這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
hours
- 減去的時間可能是負的 - 返回:
-
一個
ZonedDateTime
基於這個日期時間中減去,而不是空的時間 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
minusMinutes
公共 ZonedDateTime minus分鍾(長分鍾)
ZonedDateTime
以指定的分鍾數減去返回此副本。這在即時時間線上運行,使得減去一分鍾總是一分鍾前的持續時間。這可能會導致本地日期時間改變一分鍾以外的金額。請注意,這是與日,月和年使用的方法不同的方法。
這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
minutes
- 減去的分鍾數可能是負數 - 返回:
-
一個
ZonedDateTime
基於此日期,時間與分鍾減去,不為空 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
minusSeconds
公共 ZonedDateTime minusSeconds(長秒)
ZonedDateTime
以指定的秒數減去返回此副本。這是在即時時間線上運行的,因此減去一秒將始終是一秒的持續時間。這可能導致本地日期 - 時間改變一秒以外的量。請注意,這是與日,月和年使用的方法不同的方法。
這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
seconds
- 減去的秒數可能為負數 - 返回:
-
一個
ZonedDateTime
基於此日期,時間與秒中減去,不為空 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
minusNanos
公共 ZonedDateTime minus 納諾斯(長納米)
ZonedDateTime
以指定的納秒數減去返回此副本。這在當前的時間線上運行,使得減去一個納米將始終是一個納米早的持續時間。這可能會導致本地日期時間改變一個納米以外的量。請注意,這是與日,月和年使用的方法不同的方法。
這個實例是不可變的,不受此方法調用的影響。
- 參數:
-
nanos
- 納米減去,可能是負面的 - 返回:
-
一個
ZonedDateTime
基於此日期,時間與納秒扣除,不為空 - 拋出:
-
DateTimeException
- 如果結果超出支持的日期范圍
-
詢問
public R R query(TemporalQuery <R>查詢)
使用指定的查詢查詢此日期時間。這使用指定的查詢策略對象查詢此日期時間。該
TemporalQuery
對象定義了用於獲取結果的邏輯。閱讀查詢文檔以了解此方法的結果。該方法的結果是通過調用
TemporalQuery.queryFrom(TemporalAccessor)
指定查詢的 方法this
作為參數傳遞來獲得的。- 指定者:
-
query
在界面中ChronoZonedDateTime<LocalDate>
- 指定者:
-
query
在界面中TemporalAccessor
- 類型參數:
-
R
- 結果的類型 - 參數:
-
query
- 要調用的查詢,不為null - 返回:
- 查詢結果可能返回null(由查詢定義)
- 拋出:
-
DateTimeException
- 如果無法查詢(由查詢定義) -
ArithmeticException
- 如果發生數值溢出(由查詢定義)
-
直到
公眾長期以來(Temporal endExclusive, TemporalUnit 單位)
根據指定的單位計算直到另一個日期時間的時間量。這將根據
ZonedDateTime
單個計算兩個對象之間的時間量TemporalUnit
。開始點和結束點是this
指定的日期時間。如果結束在開始之前,結果將為負值。例如,可以使用計算兩個日期時間之間的天數startDateTime.until(endDateTime, DAYS)
。將
Temporal
傳遞給此方法被轉換為ZonedDateTime
使用from(TemporalAccessor)
。如果兩個區划日期時間不同,指定的結束日期時間將被標准化為具有與此日期時間相同的區域。該計算返回一個整數,表示兩個日期時間之間完整單位的數量。例如,2012-06-15T00:00Z和2012-08-14T23:59Z之間的月數將僅為一個月,因為這是兩個月的一分鍾。
有兩種使用此方法的等效方法。首先是調用這個方法。其次是使用
TemporalUnit.between(Temporal, Temporal)
://這兩行是相同的 amount = start.until(end,MONTHS); 金額= MONTHS.between之間(開始,結束);
應該根據哪個選項使代碼更具可讀性。該計算在此方法中實現
ChronoUnit
。單位NANOS
,MICROS
,MILLIS
,SECONDS
,MINUTES
,HOURS
和HALF_DAYS
,DAYS
,WEEKS
,MONTHS
,YEARS
,DECADES
,CENTURIES
,MILLENNIA
和ERAS
支持。其他ChronoUnit
值將引發異常。日期和時間單位的計算有所不同。
日期單位使用當地日期時間在當地時間線上運行。例如,從第1天中午到第二天中午(以天為單位)的時間段總是計為一天,而不管是否存在夏令時變化。
時間單位在即時時間線上運行。該計算有效地將分區日期時間轉換為時刻,然后計算時刻之間的時段。例如,取決於是否存在日光節約變化,從第1天中午到第二天中午的時間可以是23,24或25小時(或其他量)。
如果單位不是a
ChronoUnit
,則此方法的結果是通過調用作為第一個參數的TemporalUnit.between(Temporal, Temporal)
傳遞this
和作為第二個參數調用轉換后的輸入temporal來獲得的。這個實例是不可變的,不受此方法調用的影響。
- 指定者:
-
until
在界面中Temporal
- 參數:
-
endExclusive
- 結束日期,排他,轉換為ZonedDateTime
,不為空 -
unit
- 測量金額的單位,不為零 - 返回:
- 該日期時間與結束日期之間的時間量
- 拋出:
-
DateTimeException
- 如果無法計算金額,或者結束時間不能轉換為ZonedDateTime
-
UnsupportedTemporalTypeException
- 如果設備不受支持 -
ArithmeticException
- 如果數字溢出發生
-
格式
公共 字符串 格式(DateTimeFormatter 格式化程序)
使用指定的格式化程序格式化此日期時間。這個日期時間將被傳遞給格式化程序以產生一個字符串。
- 指定者:
-
format
在界面中ChronoZonedDateTime<LocalDate>
- 參數:
-
formatter
- 要使用的格式化程序,不為null - 返回:
- 格式化的日期時間字符串,不為空
- 拋出:
-
DateTimeException
- 如果打印過程中發生錯誤
-
toOffsetDateTime
public OffsetDateTime toOffsetDateTime()
將此日期時間轉換為OffsetDateTime
。這會使用本地日期時間和偏移量創建偏移日期時間。區域ID被忽略。
- 返回:
- 表示相同的本地日期時間和偏移量的偏移日期時間,不為空
-
等於
public boolean equals(Object obj)
檢查這個日期時間是否等於另一個日期時間。該比較基於偏移日期時間和區域。只有類型的對象
ZonedDateTime
被比較,其他類型返回false。- 指定者:
-
equals
在界面中ChronoZonedDateTime<LocalDate>
- 覆蓋:
-
equals
在班上Object
- 參數:
-
obj
- 要檢查的對象,null返回false - 返回:
- 如果這與其他日期時間相同,則為true
- 也可以看看:
-
Object.hashCode()
,HashMap
-
的hashCode
public int hashCode()
這個日期時間的哈希碼。- 指定者:
-
hashCode
在界面中ChronoZonedDateTime<LocalDate>
- 覆蓋:
-
hashCode
在班上Object
- 返回:
- 一個合適的哈希碼
- 也可以看看:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-