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

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

在 DateTimeFormatter 中處理多種格式

在 DateTimeFormatter 中處理多種格式

神不在的星期二 2023-06-14 15:39:58
我正在使用 Java 8 開發(fā)一個函數(shù),該函數(shù)必須處理從以下日期String到的轉(zhuǎn)換:LocalDateTime2019-06-20 12:18:07.207 +0000 UTC2019-06-20 12:18:07.20 +0000 UTC2019-06-20 12:18:07.2 +0000 UTC2019-06-20 12:18:07 +0000 UTC這些字符串是從我無法更改的外部庫生成的。我嘗試使用 type 提供的可選格式DateTimeFormatter,使用字符[and?]。我嘗試了以下模式:yyyy-MM-dd HH:mm:ss[.S[S[S]]] Z zyyyy-MM-dd HH:mm:ss[.S[S][S]] Z z但是,它們都不起作用。有什么建議嗎?
查看完整描述

3 回答

?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗 獲得超3個贊

您可以使用和DateTimeFormatterBuilder重用常量來構(gòu)建模式:ISO_LOCAL_DATEISO_LOCAL_TIME

????DateTimeFormatter?formatter?=?new?DateTimeFormatterBuilder()
????????????.append(DateTimeFormatter.ISO_LOCAL_DATE)
????????????.appendLiteral("?")
????????????.append(DateTimeFormatter.ISO_LOCAL_TIME)
????????????.appendPattern("[?Z?z]")
????????????.toFormatter();?
???????????????ZonedDateTime?dt?=?ZonedDateTime.parse(date,?formatter);

訣竅是DateTimeFormatter.ISO_LOCAL_TIME處理不同數(shù)量的數(shù)字來表示它自己的毫秒數(shù)。來自DateTimeFormatter.ISO_LOCAL_TIMEJavaDoc:

這將返回一個不可變的格式化程序,能夠格式化和解析 ISO-8601 擴展本地時間格式。格式包括:
[..]
納秒級的一到九位數(shù)字。將根據(jù)需要輸出盡可能多的數(shù)字。


查看完整回答
反對 回復(fù) 2023-06-14
?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗 獲得超9個贊

DateTimeFormatterBuilder我認(rèn)為為此目的使用 a 更好。對于可選部分,只需使用以下方法之一:

  1. 可選開始()和可選結(jié)束()

  2. 使用appendOptional()附加整個可選模式

這是一個例子:

DateTimeFormatter?formatter?=?DateTimeFormatter.ofPattern(""
????+?"[yyyy-MM-dd?HH:mm:ss.SSS?Z?z]"
????+?"[yyyy-MM-dd?HH:mm:ss.SS?Z?z]"
????+?"[yyyy-MM-dd?HH:mm:ss.S?Z?z]"
????+?"[yyyy-MM-dd?HH:mm:ss?Z?z]");

此外,您可以為每個可選的創(chuàng)建一個 dtf 并將它們附加到 appendOptional() 和DateTimeFormatterBuilder

例如 :

DateTimeFormatter?formatter?=?new?DateTimeFormatterBuilder()
????.appendValue(HOUR_OF_DAY,2)
????.optionalStart()
????.appendValue(MINUTE_OF_HOUR,2)
????.optionalEnd()
????.optionalStart()
????.appendValue(SECOND_OF_MINUTE,2)
????.optionalEnd()
????.toFormatter();

此代碼未經(jīng)測試,但每次都嘗試在開始/結(jié)束可選塊中構(gòu)建您的可選模式。


查看完整回答
反對 回復(fù) 2023-06-14
?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗 獲得超9個贊

這是我在一個采用不同格式的應(yīng)用程序中使用的示例,您可以看到毫秒是可選的,最后也是“Z”。

new DateTimeFormatterBuilder()
      .appendPattern("yyyy-MM-dd'T'HH:mm:ss")
      .optionalStart()
      .appendLiteral('.')
      .appendValue(ChronoField.MILLI_OF_SECOND, 1, 3, SignStyle.NORMAL)
      .optionalEnd()
      .optionalStart()
      .appendLiteral('Z')
      .optionalEnd()
      .toFormatter

appendPattern 是靜態(tài)值,其他在內(nèi)部可選的開始和結(jié)束,構(gòu)建這樣的模式非常簡單(如果你當(dāng)然知道如何去做;))


查看完整回答
反對 回復(fù) 2023-06-14
  • 3 回答
  • 0 關(guān)注
  • 399 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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