<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java – 日期格式 > 原文: [https://howtodoinjava.com/java/date-time/java-date-formatting/](https://howtodoinjava.com/java/date-time/java-date-formatting/) 學習在 Java 8 中將**日期格式化為字符串**。我們將學習 Java 7 中的[`DateTimeFormatter`](https://howtodoinjava.com/java/date-time/java8-datetimeformatter-example/)的*自定義模式*和`SimpleDateFormat`的*內置模式*。 ## 1\. `DateTimeFormatter` – Java 8 在 Java 8 中,我們可以將`DateTimeFormatter`用于所有類型的日期和時間相關的格式化任務。 它是[**線程安全的**](https://howtodoinjava.com/java/multi-threading/what-is-thread-safety/)或[不可變的](https://howtodoinjava.com/java/basics/how-to-make-a-java-class-immutable/) ,因此可以在并發環境中使用而沒有風險。 #### 1.1 日期格式示例 Java 8 示例,以所需的字符串模式格式化`LocalDateTime`和`LocalDate`實例。 ```java import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateFormatting { public static void main(String[] args) { String dateTimeString = formatLocalDateTime(LocalDateTime.now()); System.out.println(dateTimeString); //2020-05-08 23:17:22 PM String dateString = formatLocalDate(LocalDate.now()); System.out.println(dateString); //2020-05-08 } //Format LocalDateTime to String public static final String TIMESTAMP_PATTERN = "yyyy-MM-dd HH:mm:ss a"; public static final DateTimeFormatter LDT_FOMATTER = DateTimeFormatter.ofPattern(TIMESTAMP_PATTERN); private static String formatLocalDateTime(LocalDateTime ldt) { return LDT_FOMATTER.format(ldt); } //Format LocalDate to String public static final String DATE_PATTERN = "yyyy-MM-dd"; public static final DateTimeFormatter LD_FOMATTER = DateTimeFormatter.ofPattern(DATE_PATTERN); private static String formatLocalDate(LocalDate ld) { return LD_FOMATTER.format(ld); } } ``` #### 1.2 模式串 `DateTimeFormatter`提供了兩種方法來定義模式: * 將近 15 種內置的**預定義模式**,例如 `ISO_LOCAL_DATE`(`2011-12-03`)或`ISO_OFFSET_DATE_TIME`(`2011-12-03T10:15:30+01:00`) * 使用`DateTimeFormatter.ofPattern(pattern)`的任何**自定義樣式** 定制模式串可以具有任意數量的具有自己含義的預定義字母和符號。 最常用的符號是:`Y, M, D, h, m, s`。 另請注意,模式中字母的重復次數也具有不同的含義。 例如,`MMM`給出`Jan`,而`MMMM`給出`January`。 讓我們看看這些符號以供快速參考。 | 符號 | 含義 | 類型 | 示例 | | --- | --- | --- | --- | | `G` | 時代 | `String` | `AD`;`Anno Domini` | | `y` | 時代中的一年 | `Year` | 2004 或 04 | | `u` | 時代中的一年 | `Year` | 與`y`類似,但返回年份。 | | `D` | 一年中的一天 | `Number` | 235 | | `M / L` | 一年中的一月 | `Number`/`String` | 7 或 07; `J`或`Jul`或`July` | | `d` | 一月中的一天 | `Number` | 21 | | `Q / q` | 一年中的季度 | `Number` / String | 3 或 03;`Q3`或`3rd quarter` | | `Y` | 基于周的年份 | `Year` | 1996 或 96 | | `w` | 一年中的一周 | `Number` | 32 | | `W` | 一月中的一周 | `Number` | 3 | | `e / c` | 本地化一周中的一天 | `Number`/`String` | 2 或 02;`T`或`Tue`或`Tuesday` | | `E` | 一周中的一天 | `String` | `T`或`Tue`或`Tuesday` | | `F` | 一月中的一周 | `Number` | 3 | | `a` | 一天的上午/下午 | `String` | `PM` | | `h` | 上午/下午的小時(1-12) | `Number` | 12 | | `K` | 上午/下午的小時(0-11) | `Number` | 0 | | `k` | 一天中的小時(1-24) | `Number` | 15 | | `H` | 一天中的小時(0-23) | `Number` | 15 | | `m` | 小時中的分鐘 | `Number` | 30 | | `s` | 分鐘中的秒鐘 | `Number` | 55 | | `S` | 秒鐘的小數 | `Fraction` | 978 | | `A` | 一天中的毫秒 | `Number` | 1234 | | `n` | 秒鐘中的納秒 | `Number` | 987654321 | | `N` | 一天中的納秒 | `Number` | 1234560000 | | `V` | 時區編號 | `Zone-id` | `America/Los_Angeles` 或`Z`或`–08:30` | | `z` | 時區名稱 | `Zone-name` | `Pacific Standard Time`或`PST` | | `X` | 區域偏移(`Z`代表零) | `Offset-X` | `Z`或`–08`或`–0830`或`–08:30`或`–083015`或`–08:30:15` | | `x` | 區域偏移 | `Offset-x` | `+0000`或`–08`或`–0830`或`–08:30`或`–083015`或`–08:30:15` | | `Z` | 區域偏移 | `Offset-Z` | `+0000`或`–0800`或`–08:00` | | `O` | 本地區域偏移 | `Offset-O` | `GMT+8`或`GMT+08:00`或`UTC–08:00` | | `p` | 填充 | 填充修飾符 | 1 | #### 1.3 `UnsupportedTemporalTypeException` 如果我們嘗試將`DateTimeFormatter`與日期時間實例不支持的模式一起使用,則其`format()`將引發此異常。 例如,如果我們嘗試使用包含小時和分鐘的模式格式化`LocalDate`,則將引發此異常,因為`LocalDate`不支持任何時間信息。 ```java public static final String TIMESTAMP_PATTERN = "yyyy-MM-dd HH:mm:ss a"; public static final DateTimeFormatter FOMATTER = DateTimeFormatter.ofPattern(TIMESTAMP_PATTERN); String formmatedString = FOMATTER.format( LocalDate.now() ); ``` ```java Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay at java.base/java.time.LocalDate.get0(LocalDate.java:709) at java.base/java.time.LocalDate.getLong(LocalDate.java:688) at java.base/java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:308) at java.base/java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format(DateTimeFormatterBuilder.java:2704) at java.base/java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2343) at java.base/java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1847) at java.base/java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1821) at com.howtodoinjava.core.datetime.DateFormatting.formatLocalDate(DateFormatting.java:33) at com.howtodoinjava.core.datetime.DateFormatting.main(DateFormatting.java:21) ``` ## 2\. `SimpleDateFormat` – Java 7 如果您仍然停留在 Java 7 上并且由于某些舊版應用程序的依賴性而無法升級,則可以使用`SimpleDateFormat`進行日期格式化。 盡管`SimpleDateFormat`不是線程安全的或不可變的,但它仍然可以很好地達到目的。 不要在具有同步功能的多線程環境中使用此類。 ```java import java.text.SimpleDateFormat; import java.util.Date; public class JavaDateValidations { public static final String TIMESTAMP_PATTERN = "yyyy-MM-dd HH:mm:ss a"; public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat(TIMESTAMP_PATTERN); Date date = new Date(); String formattedDate = sdf.format(date); System.out.println(formattedDate); //2020-05-09 00:32:28 AM } } ``` ## 3\. 總結 如果您有將 Java 7 應用程序升級到 Java 8 的自由,請優先執行。 就性能而言,`DateTimeFormatter`的線程安全性和不變性是對`SimpleDateFormat`的巨大勝利。 這兩個類都提供了`format()`示例,用于將日期對象格式化為字符串。 在評論中給我您有關 Java 日期格式化器示例的問題和建議。 學習愉快! [下載源碼](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>

                              哎呀哎呀视频在线观看