<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java – 日期和時間 API > 原文: [https://howtodoinjava.com/java-date-and-time-apis/](https://howtodoinjava.com/java-date-and-time-apis/) Java 主要使用兩個包`java.time`和`java.util`支持日期和時間特性。 包`java.time`是在 Java 8 中添加的( [JSR-310](https://jcp.org/en/jsr/detail?id=310) ),新添加的類旨在解決傳統`java.util.Date`和`java.util.Calendar`類的缺點。 ## 1\. 舊版日期時間 API #### 1.1 類 Java 8 發行之前的主要類是: * [`System.currentTimeMillis()`](https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#currentTimeMillis()):表示自 1970 年 1 月 1 日起的當前日期和時間(以毫秒為單位)。 * [`java.util.Date`](https://docs.oracle.com/javase/7/docs/api/java/util/Date.html):表示特定的時間瞬間,精度為毫秒。 * [`java.util.Calendar`](https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html):一個抽象類,提供用于在實例之間進行轉換并以不同的方式操縱日歷字段的方法。 * [`java.text.SimpleDateFormat`](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html):一個具體的類,用于以對語言環境敏感的方式以及任何預定義以及任何用戶定義的模式來格式化和解析日期。 * [`java.util.TimeZone`](https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html):代表時區偏移量,并且還計算出夏令時。 #### 1.2 挑戰 盡管這些 API 非常適合簡單的用例,但 Java 社區仍在不斷抱怨有效使用這些類的問題。 因此,其他許多第三方庫(例如 [Joda-Time](https://www.joda.org/joda-time/) 或 [Apache Commons](https://commons.apache.org/) 中的類)也更加受歡迎。 很少有挑戰: * `Date`類應表示日期,但也表示具有小時,分鐘和秒的實例。 * 但是`Date`沒有任何關聯的時區。 它會自動選擇默認時區。 您不能將日期表示為其他時區。 * 類是可變的。 因此,這給開發人員在傳遞可以更改日期的函數之前克隆日期增加了負擔。 * 日期格式化類也不是線程安全的。 如果沒有其他同步,則無法使用格式化器實例,否則代碼可能會中斷。 * 出于某種原因,還有另一種`java.sql.Date`,其中包含時區信息。 * 使用其他時區創建日期非常棘手,通常會導致錯誤的結果。 * 它的類使用零索引數月,這是多年來應用程序中許多錯誤的原因。 ## 2\. Java 8 中的新日期時間 API 新的日期 api 嘗試解決舊類的上述問題。 它主要包含以下類: * [`java.time.LocalDate`](https://howtodoinjava.com/java/date-time/compare-localdates/):表示 ISO 日歷中的年-月-日,對于表示沒有時間的日期很有用。 它可用于表示僅日期的信息,例如出生日期或結婚日期。 * [`java.time.LocalTime`](https://howtodoinjava.com/java/date-time/java-localtime/):僅及時處理。 這對于表示基于人的時間(例如電影時間或本映射書館的開放和關閉時間)很有用。 * [`java.time.LocalDateTime`](https://howtodoinjava.com/java/date-time/compare-localdatetime/):處理日期和時間,沒有時區。 它是`LocalDate`與`LocalTime`的組合。 * [`java.time.ZonedDateTime`](https://howtodoinjava.com/java/date-time/zoneddatetime-comparison/):將`LocalDateTime`類與`ZoneId`類中給出的區域信息組合在一起。 它代表完整的日期時間戳以及時區信息。 * `java.time.OffsetTime`:處理時間與格林威治/ UTC 有相應時區偏移的時間,沒有時區 ID。 * `java.time.OffsetDateTime`:處理具有與格林威治/ UTC 相對應的時區偏移的日期和時間,沒有時區 ID。 * `java.time.Clock`:提供對任何給定時區中的當前時刻,日期和時間的訪問。 盡管使用`Clock`類是可選的,但是此特性使我們可以測試其他時區的代碼,也可以使用時間不可變的固定時鐘來測試您的代碼。 * `java.time.Instant`:表示時間軸上的納秒的開始(自紀元開始),對于生成表示機器時間的時間戳很有用。 在紀元之前發生的瞬間具有負值,在紀元之后發生的瞬間具有正值。 * `java.time.Duration`:兩個瞬間之間的差異,以秒或納秒為單位,并且不使用基于日期的構造,例如年,月和日,盡管該類提供了轉換為天,小時和分鐘的方法。 * `java.time.Period`:以基于日期的值(年,月,日)定義日期之間的差異。 * `java.time.ZoneId`:指定時區標識符,并提供用于在`Instant`和`LocalDateTime`之間進行轉換的規則。 * `java.time.ZoneOffset`:指定與格林威治/ UTC 時間的時區偏移。 * [`java.time.format.DateTimeFormatter`](https://howtodoinjava.com/java/date-time/java8-datetimeformatter-example/):提供許多預定義的格式化器,或者我們可以定義自己的格式化器。 它提供`parse()`或`format()`方法來解析和格式化日期時間值。 ## 3\. 常見用例 這些示例使用 Java 8 日期時間 API 中引入的新類。 #### 3.1 獲取當前日期和時間 所有日期時間類都有一個工廠方法`now()`,這是在 Java 8 中獲取當前日期和時間的首選方法。 ```java LocalTime currentTime = LocalTime.now(); //13:33:43.557 LocalDate currentDate = LocalDate.now(); //2020-05-03 LocalDateTime currentDateTime = LocalDateTime.now(); //2020-05-03T13:33:43.557 ``` #### 3.2 解析日期和時間 日期時間類中的`DateTimeFormatter`類和`parse()`方法幫助完成日期解析。 ```java String dateString = "2020-04-08 12:30"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); LocalDateTime parsedDateTime = LocalDateTime.parse(dateString, formatter); System.out.println(parsedDateTime); //2020-04-08T12:30 ``` #### 3.3 格式化日期和時間 日期格式通過日期時間類中的`DateTimeFormatter`類和`format()`方法來完成。 ```java //Format a date LocalDateTime myDateObj = LocalDateTime.now(); DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm"); String formattedDate = myDateObj.format(myFormatObj); System.out.println(formattedDate); // 03-05-2020 13:46 ``` ## 4\. 更多例子 [Java – 獲取兩個日期之間的所有日期](https://howtodoinjava.com/java/date-time/dates-between-two-dates/) [Java 8 - 獲取下一個和上一個日期](https://howtodoinjava.com/java/date-time/java8-next-previous-date/) [Java 8 - 獲取當前日期時間](https://howtodoinjava.com/java/date-time/current-date-time/) [Java 8 – 獲取當前時間戳](https://howtodoinjava.com/java/date-time/get-current-timestamp/) [Java 8 – 日期比較](https://howtodoinjava.com/java/date-time/compare-dates/) [Java 8 - 轉換為 EST 時區](https://howtodoinjava.com/java/date-time/convert-date-time-to-est-est5edt/) [Java 8 – 測量經過時間](https://howtodoinjava.com/java/date-time/execution-elapsed-time/) [Java 8 – 向日期添加天數](https://howtodoinjava.com/java/date-time/add-days-to-date-localdatetime/) [Java 8 – 兩個日期之間的差異](https://howtodoinjava.com/java/date-time/duration-between-two-dates/) [Java 8 – 兩個日期之間的差異](https://howtodoinjava.com/java/date-time/calculate-difference-between-two-dates-in-java/) [Java 8 – 加或減 N 個工作日](https://howtodoinjava.com/java/date-time/add-subtract-business-days/) [Java 8 – 計算兩個日期之間的工作日](https://howtodoinjava.com/java/date-time/calculate-business-days/) [Java 8 – 計算兩個日期之間的天數](https://howtodoinjava.com/java/date-time/calculate-days-between-dates/) [Java – 獲取當前用戶區域設置](https://howtodoinjava.com/java/date-time/how-to-get-current-user-locale-in-java/) [Java – 檢查給定的年份是否為閏年?](https://howtodoinjava.com/java/date-time/check-leap-year/) [Java – 將字符串解析為日期](https://howtodoinjava.com/java/date-time/java-parse-string-to-date/) [Java – 將`XMLGregorianCalendar`格式設置為`MM/dd/yyyy hh:mm:ss`模式](https://howtodoinjava.com/java/date-time/format-xmlgregoriancalendar-to-date-pattern/) [Java – 將`XMLGregorianCalendar`格式化為字符串](https://howtodoinjava.com/java/date-time/xmlgregoriancalendar-date-string-example/) [Java – 以 12 小時格式格式化日期/時間戳](https://howtodoinjava.com/java/date-time/format-time-12-hours-pattern/) [Java – 時區轉換](https://howtodoinjava.com/java/date-time/convert-date-between-timezones/) [Java – 嚴格日期驗證](https://howtodoinjava.com/java/date-time/strict-date-validation-simpledateformat-setlenient/) 學習愉快! [下載源碼](https://github.com/lokeshgupta1981/Core-Java/tree/master/src/com/howtodoinjava/core/datetime)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看