第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

Helenr 2022-07-27 19:49:53
我有一個(gè)關(guān)于DateTimeFormatter格式化程序的問題。在 SWAPI ( https://swapi.co/documentation#people ) 中,您可以閱讀日期created和edited日期,格式如下:2014-12-09T13:50:51.644000Z這個(gè)日期的描述是: 但是在 Predefined Formatters 部分的 Class DateTimeFormatter 的文檔中,我看不到任何與 SWAPI 日期示例匹配的格式化程序。問題是,當(dāng)我嘗試解析它時(shí),正在使用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'")知道哪個(gè)是正確的格式化程序嗎?
查看完整描述

1 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

根據(jù)您的情況,您可能根本不需要指定格式化程序。java.time 類將 ISO 8601 格式解析(并打?。槟J(rèn)格式,即沒有任何顯式格式化程序。正如您圖片中的描述所說,這是您所擁有的格式。


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


ISO_INSTANT

ISO_OFFSET_DATE_TIME

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


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

    Instant created = Instant.parse(swapiCreatedString);

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

輸出:


創(chuàng)建于 2014-12-09T13:50:51.644Z


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


    OffsetDateTime created = OffsetDateTime.parse(swapiCreatedString);

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


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


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

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

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


    // 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);

創(chuàng)建于 2014-12-09T13:50:51.000644


您會看到51.644秒數(shù)被錯(cuò)誤地更改為51.000644。


查看完整回答
反對 回復(fù) 2022-07-27
  • 1 回答
  • 0 關(guān)注
  • 190 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號