<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          請別再使用 SimpleDateFormat 格式化時間了,DateTimeFormatter 更出色!

          共 5497字,需瀏覽 11分鐘

           ·

          2022-07-25 22:35

          ????關注后回復 “進群” ,拉你進程序員交流群????

          DateTimeFormatter類

          我們先來看看SImpleDateFormat類的部分源碼,如圖1所示。

          圖1

          接著再來看看DateTimeFormatter類的部分源碼,如 圖2所示。

          圖2

          由上可知,與SimpleDateFormat不同的是,DateTimeFormatter不但是不變對象,它還是線程安全的。線程的概念我們會在后面涉及到。

          現(xiàn)在我們只需要記?。阂驗?code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(60, 112, 198);">SimpleDateFormat不是線程安全的,使用的時候,只能在方法內(nèi)部創(chuàng)建新的局部變量。而DateTimeFormatter可以只創(chuàng)建一個實例,到處引用。

          接下來,我們來說一說DateTimeFormatter類的常用方法

          //創(chuàng)建一個格式化程序使用指定的模式
          static DateTimeFormatter ofPattern(String pattern) 
            
          //創(chuàng)建一個格式化程序使用指定的模式和現(xiàn)場。
          static DateTimeFormatter ofPattern(String pattern, Locale locale) 
           
          //使用此格式化程序格式的日期時間對象
          String format(TemporalAccessor temporal) 

          其中,TemporalAccessor是一個接口,其實現(xiàn)類有LocalDate、LocalTime、LocalDateTime、ZonedDateTime等……

          所以我們在使用format方法時,一般傳入其實現(xiàn)類的實例化對象即可。

          接下來我們舉幾個例子。

          范例1:創(chuàng)建DateTimeFormatter

          package edu.blog.test07;

          import java.time.LocalDateTime;
          import java.time.format.DateTimeFormatter;

          public class DateTimeFormatterTestDemo01 {
              public static void main(String[] args) {
                  //自定義輸出格式
                  DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
                  System.out.println(dtf.format(LocalDateTime.now()));
                  System.out.println("===================================");
                  //自定義格式解析
                  LocalDateTime localDateTime = LocalDateTime.parse("2001/07/27 22:22:22", dtf);
                  System.out.println(localDateTime);
              }
          }

          /*
          結(jié)果:
          2021/04/02 23:14:46
          ===================================
          2001-07-27T22:22:22
          */

          由上可知,DateTimeFormatter類格式化字符串的使用方式與SImpleDateFormat一樣。

          此外,另一種創(chuàng)建DateTimeFormatter的方法是,傳入格式化字符串的同時,同時指定Locale。

          范例2:按照Locale默認習慣格式化

          package edu.blog.test07;

          import java.time.ZonedDateTime;
          import java.time.format.DateTimeFormatter;
          import java.util.Locale;

          public class DateTimeFormatterTestDemo02 {
              public static void main(String[] args) {
                  ZonedDateTime zonedDateTime = ZonedDateTime.now();
                  System.out.println(zonedDateTime);
                  System.out.println("==============================");

                  DateTimeFormatter formatter01 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ZZZZ");
                  System.out.println(formatter01.format(zonedDateTime));
                  System.out.println("==============================");

                  DateTimeFormatter formatter02 = DateTimeFormatter.ofPattern("yyyy MMM dd EE:HH:mm", Locale.CHINA);
                  System.out.println(formatter02.format(zonedDateTime));
                  System.out.println("==============================");

                  DateTimeFormatter formatter03 = DateTimeFormatter.ofPattern("E, MMMM/dd/yyyy HH:mm", Locale.US);
                  System.out.println(formatter03.format(zonedDateTime));
              }
          }

          /*
          結(jié)果:
          2021-04-02T23:27:59.326+08:00[Asia/Shanghai]
          ==============================
          2021-04-02T23:27:GMT+08:00
          ==============================
          2021 四月 02 星期五:23:27
          ==============================
          Fri, April/02/2021 23:27
          */

          運行本程序,分別以默認方式、中國地區(qū)和美國地區(qū)對當前時間進行顯示,結(jié)果如上所述。

          在格式化字符串中,如果需要輸出固定字符,可以用’xxx’表示。

          當我們直接調(diào)用"System.out.println()"對一個ZonedDateTime或者LocalDateTime實例進行打印的時候,實際上,調(diào)用的是它們的toString()方法,默認的toString()方法顯示的字符串就是按照ISO 8601格式顯示的,我們可以通過DateTimeFormatter預定義的幾個靜態(tài)變量來引用。

          范例3:過DateTimeFormatter預定義靜態(tài)變量

          package edu.blog.test07;

          import java.time.LocalDateTime;
          import java.time.format.DateTimeFormatter;

          public class DateTimeFormatterTestDemo03 {
              public static void main(String[] args) {
                  LocalDateTime localDateTime = LocalDateTime.now();
                  System.out.println(localDateTime);
                  System.out.println(DateTimeFormatter.ISO_DATE.format(localDateTime));
                  System.out.println(DateTimeFormatter.ISO_DATE_TIME.format(localDateTime));
              }
          }

          /*
          結(jié)果:
          2021-04-02T23:38:11.707
          2021-04-02
          2021-04-02T23:38:11.707
          */

          總結(jié)

          ZonedDateTimeLocalDateTime進行格式化,需要使用DateTimeFormatter類,DateTimeFormatter可以通過格式化字符串和Locale對日期和時間進行定制輸出。

          來源:blog.csdn.net/Window_mouse/article/

          details/116356814?

          -End-

          最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!

          點擊??卡片,關注后回復【面試題】即可獲取

          在看點這里好文分享給更多人↓↓

          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操碰97 | 黑人日亚洲美女 | 亚洲男人的天堂在线视频 | 亚洲九九| 国产成人激情视频 |