Java 8 新特新 工具類 ZonedDateTime


類ZonedDateTime

  • 所有實現的接口:
    Serializable Comparable  <  ChronoZonedDateTime  <?>>, ChronoZonedDateTime  <  LocalDate  >, Temporal TemporalAccessor


    public final class ZonedDateTime extends Object 實現TemporalChronoZonedDateTime < 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 的組合ZoneIdZoneOffset是一個重要但次要的信息,用於確保課程表示一個瞬間,特別是在夏令時重疊期間。

    這是一個基於價值的 課程; ==對實例使用身份敏感操作(包括引用相等(),身份哈希代碼或同步) ZonedDateTime可能會產生不可預知的結果,應予以避免。equals方法應該用於比較。

    實施要求:
    一個 ZonedDateTime 持有狀態相當於三個單獨的對象,a  LocalDateTime ,a  ZoneId 和已解決 ZoneOffset 偏移量和本地日期時間用於在必要時定義一個瞬間。區域ID用於獲取偏移量如何以及何時更改的規則。偏移不能自由設置,因為區域控制哪些偏移有效。

    這個類是不可變的,線程安全的。

    以來:
    1.8
    也可以看看:
    序列化表格
    • 方法細節

      • 現在

        公共靜態  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 的LocalDateTimeZoneOffset這種組合唯一地指定了一個沒有歧義的時刻。

        將瞬間轉換為分區日期時間非常簡單,因為每個時刻只有一個有效偏移量。如果有效偏移量與指定偏移量不同,則划分日期時間的日期時間和偏移量將與指定的不同。

        如果ZoneId要使用的是a ZoneOffset,則此方法等同於of(LocalDateTime, ZoneId)

        參數:
        localDateTime  - 本地日期時間,不為空
        offset  - 區域偏移量,不為空
        zone  - 時區,不為空
        返回:
        分區日期時間,不為空
      • ofStrict

        公共靜態  ZonedDateTime  ofStrict(LocalDateTime  localDateTime,
                                              ZoneOffset  偏移量,
                                              ZoneId  區域)
        獲取 ZonedDateTime 嚴格驗證本地日期時間,偏移量和區域ID組合的實例

        這會根據指定區域的規則創建分區日期時間,以確保偏移對本地日期時間有效。如果偏移量無效,則拋出異常。

        參數:
        localDateTime  - 本地日期時間,不為空
        offset  - 區域偏移量,不為空
        zone  - 時區,不為空
        返回:
        分區日期時間,不為空
      • 公共靜態  ZonedDateTime  來自(TemporalAccessor  temporal)
        ZonedDateTime 從一個時間對象中獲得一個實例

        這將根據指定的時間獲取分區日期時間。TemporalAccessor表示一組任意的日期和時間信息,該工廠將其轉換為一個實例ZonedDateTime

        該轉換將首先ZoneId從時間對象中獲得一個ZoneOffset如果需要將轉換回來然后它會嘗試獲得一個InstantLocalDateTime如果有必要,會回落結果將是ZoneIdZoneOffsetInstant的組合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)and minus方法將拋出異常。

        如果單位是一個,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_DAYMICRO_OF_DAY, EPOCH_DAYPROLEPTIC_MONTHINSTANT_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  字段)
        從該日期時間獲取指定字段的值作為a  long

        這會查詢此日期時間以獲取指定字段的值。如果無法返回該值,因為該字段不受支持或出於某種其他原因,會引發異常。

        如果該字段是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())

        返回:
        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的月份字段。

        此方法返回int1到12 的月份。如果Month 通過調用使用枚舉,應用程序代碼通常會更清晰getMonth()

        返回:
        從1到12的月份
        也可以看看:
        getMonth()
      • 得到月

        public  Month  getMonth()
        獲取使用 Month 枚舉的月份字段

        此方法返回Month該月的枚舉這避免了對於什么int值意味着混淆如果你需要訪問原始int值,那么枚舉提供int value

        返回:
        一年的月份,不是空的
        也可以看看:
        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接口,如MonthMonthDay調解員負責處理特殊情況,例如月份和閏年的變化長度。

        例如,這段代碼在7月的最后一天返回一個日期:

          import static java.time.Month。*;
          import static java.time.temporal.TemporalAdjusters。*;
        
          result = zonedDateTime.with(JULY).with(lastDayOfMonth());
         

        LocalDateLocalTime實現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當地日期時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        year  - 結果中設置的年份,從MIN_YEAR到MAX_YEAR
        返回:
        一個 ZonedDateTime 基於這個日期時間與請求的一年,不為空
        拋出:
        DateTimeException  - 如果年份值無效
      • withMonth

        public  ZonedDateTime  withMonth(int month)
        返回此 ZonedDateTime 年份的復制件

        這在本地時間線上運行, changing the month當地日期時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        month  - 從1月(1月)到12月(12月)的結果中設定的月份
        返回:
        一個 ZonedDateTime 基於這個日期時間與請求的一個月,不為空
        拋出:
        DateTimeException  - 如果月份的年份值無效
      • withDayOfMonth

        public  ZonedDateTime  withDayOfMonth(int dayOfMonth)
        ZonedDateTime 在月份改變的情況下返回此副本

        這在本地時間線上運行, changing the day-of-month當地日期時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        dayOfMonth  - 結果中的月份日期,從1到28-31
        返回:
        一個 ZonedDateTime 基於這個日期時間與請求的天,不為空
        拋出:
        DateTimeException  - 如果月份的日期值無效,或者月份的月份對該月份無效
      • withDayOfYear

        public  ZonedDateTime  withDayOfYear(int dayOfYear)
        返回此 ZonedDateTime 日期的副本,並更改日期。

        這在本地時間線上運行, changing the day-of-year當地日期時間。然后將其轉換回a ZonedDateTime,使用區域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 即當地的日期 - 時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        unit  - 要截斷的單位,不為null
        返回:
        一個 ZonedDateTime 基於此日期,時間與時間截斷,不為空
        拋出:
        DateTimeException  - 如果無法截斷
        UnsupportedTemporalTypeException  - 如果設備不受支持
      • 公共  ZonedDateTime  加(TemporalAmount  amountToAdd)
        返回此日期時間的副本,並添加指定的金額。

        這將返回一個ZonedDateTime基於此值的已添加的指定數量。金額通常PeriodDuration可能是實現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到當地日期時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        years  - 增加的年份可能是負面的
        返回:
        一個 ZonedDateTime 基於與年增加,不為空這個日期時間
        拋出:
        DateTimeException  - 如果結果超出支持的日期范圍
      • plusMonths

        公共  ZonedDateTime  plusMonths(長月)
        ZonedDateTime 以指定的月數返回此副本

        這在當地時間線上運行 adding months到當地日期時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        months  - 增加的幾個月可能是負面的
        返回:
        一個 ZonedDateTime 基於與幾個月增加,不為空這個日期時間
        拋出:
        DateTimeException  - 如果結果超出支持的日期范圍
      • plusWeeks

        公共  ZonedDateTime  plusWeeks(長周)
        ZonedDateTime 以指定的添加周數返回此副本

        這在當地時間線上運行 adding weeks到當地日期時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        weeks  - 增加的幾周可能是負面的
        返回:
        一個 ZonedDateTime 基於與周增加,不為空這個日期時間
        拋出:
        DateTimeException  - 如果結果超出支持的日期范圍
      • plusDays

        公共  ZonedDateTime  plusDays(長天)
        ZonedDateTime 以指定的添加天數返回此副本

        這在當地時間線上運行 adding days到當地日期時間。然后將其轉換回a ZonedDateTime,使用區域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  - 如果結果超出支持的日期范圍
      • 減去

        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到當地日期時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        years  - 減去的年份可能是負值
        返回:
        一個 ZonedDateTime 基於這個日期時間隨着年齡的增長減去,不為空
        拋出:
        DateTimeException  - 如果結果超出支持的日期范圍
      • minusMonths

        公共  ZonedDateTime  minusMonths(長月)
        ZonedDateTime 減去指定的月數返回此副本

        這在當地時間線上運行 subtracting months到當地日期時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        months  - 減去的月份可能是負值
        返回:
        一個 ZonedDateTime 基於此日期,時間與月相減,不為空
        拋出:
        DateTimeException  - 如果結果超出支持的日期范圍
      • minusWeeks

        公共  ZonedDateTime  minusWeeks(長周)
        ZonedDateTime 以指定的星期數減去返回此副本

        這在當地時間線上運行 subtracting weeks到當地日期時間。然后將其轉換回a ZonedDateTime,使用區域ID獲取偏移量。

        在轉換回時ZonedDateTime,如果本地日期時間處於重疊狀態,則可能時將保留偏移量,否則將使用較早的偏移量。如果在差距中,本地日期時間將按差距的長度向前調整。

        這個實例是不可變的,不受此方法調用的影響。

        參數:
        weeks  - 減去的周數可能是負值
        返回:
        一個 ZonedDateTime 基於此日期,時間與周中減去,不為空
        拋出:
        DateTimeException  - 如果結果超出支持的日期范圍
      • minusDays

        公共  ZonedDateTime  minusDays(長天)
        ZonedDateTime 以指定的天數減去返回此副本

        這在當地時間線上運行 subtracting days到當地日期時間。然后將其轉換回a ZonedDateTime,使用區域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單位NANOSMICROSMILLISSECONDS, MINUTESHOURSHALF_DAYSDAYS, WEEKSMONTHSYEARSDECADES, CENTURIESMILLENNIAERAS支持。其他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
      •  

        public  String  toString()
        將此日期時間輸出為a  String ,例如  2007-12-03T10:15:30+01:00[Europe/Paris]

        格式由LocalDateTime后面的ZoneOffset如果與ZoneId偏移量不相同,則輸出ID。如果偏移量和ID相同,則輸出與ISO-8601兼容。

        指定者:
        toString  在界面中  ChronoZonedDateTime<LocalDate>
        覆蓋:
        toString  在班上  Object
        返回:
        此日期時間的字符串表示形式,不為null


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM