亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DateTimeFormatter 中的格式化程序,用于時間的 ISO 8601 日期格式

DateTimeFormatter 中的格式化程序,用于時間的 ISO 8601 日期格式

Helenr 2022-07-27 19:49:53
我有一個關于DateTimeFormatter格式化程序的問題。在 SWAPI ( https://swapi.co/documentation#people ) 中,您可以閱讀日期created和edited日期,格式如下:2014-12-09T13:50:51.644000Z這個日期的描述是: 但是在 Predefined Formatters 部分的 Class DateTimeFormatter 的文檔中,我看不到任何與 SWAPI 日期示例匹配的格式化程序。問題是,當我嘗試解析它時,正在使用SSSSSS:DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'")并與nnnnnn:DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.nnnnnn'Z'")知道哪個是正確的格式化程序嗎?
查看完整描述

1 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

根據您的情況,您可能根本不需要指定格式化程序。java.time 類將 ISO 8601 格式解析(并打印)為默認格式,即沒有任何顯式格式化程序。正如您圖片中的描述所說,這是您所擁有的格式。


但是,您要鏈接的兩個預定義格式化程序與您的示例相匹配:


ISO_INSTANT

ISO_OFFSET_DATE_TIME

使用哪一個取決于您要將字符串解析成的類型的任何要求。解析為Instant. 不要指定格式化程序,只需使用Instant.parse:


    String swapiCreatedString = "2014-12-09T13:50:51.644000Z";

    Instant created = Instant.parse(swapiCreatedString);

    System.out.println("Created " + created);

輸出:


創建于 2014-12-09T13:50:51.644Z


我需要進一步操作解析的日期時間,例如為用戶格式化它,OffsetDateTime提供更多可能性:


    OffsetDateTime created = OffsetDateTime.parse(swapiCreatedString);

同樣,解析也不需要格式化程序。輸出與上述相同。


我猜您沒有看到提到的兩個格式化程序匹配的原因包括:


這些示例均不包括秒的分數,但格式化程序接受 0 到 9 位小數(包括)秒的分數。

示例偏移日期時間具有偏移量+01:00。你不知道它也Z可以作為偏移量。它的發音為“Zulu”,表示 UTC。

更直接地回答您的問題:您的格式都不完全正確。因為正如我所說Z的是一個偏移量,你會想要這樣解析它而不是一個文字,這樣你就可以從字符串中獲取偏移量信息。沒有它,您將不知道在哪個偏移量處解釋 13:50:51.644。.SSSSSS對于秒的小數部分是正確的,而.nnnnnn表示秒的納秒,這里是不正確的。一秒鐘有 10^9 納秒,所以n只有在有 9 位納秒時才有效。也許你自己的例子給出了最好的說明:


    // nnnnnn is incorrect

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.nnnnnn'Z'");

    String swapiCreatedString = "2014-12-09T13:50:51.644000Z";

    LocalDateTime created = LocalDateTime.parse(swapiCreatedString, formatter);

    System.out.println("Created " + created);

創建于 2014-12-09T13:50:51.000644


您會看到51.644秒數被錯誤地更改為51.000644。


查看完整回答
反對 回復 2022-07-27
  • 1 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號