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

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

無法將字符串轉(zhuǎn)換為 LocalDateTime 對象

無法將字符串轉(zhuǎn)換為 LocalDateTime 對象

慕標5832272 2023-07-28 15:20:40
我正在嘗試將字符串轉(zhuǎn)換為LocaleDateTime對象,Java8如下所示:    DateTimeFormatter globalFormat = DateTimeFormatter.ofPattern("yyyyMMddhhmmssSS");    String input = "2019082905020425";    LocalDateTime currentDateTime = LocalDateTime.parse(input, globalFormat);但如果有人可以幫助我解決同樣的問題,我會遇到以下異常:Exception in thread "main" java.time.format.DateTimeParseException:Text '2019082905020425' could not be parsed at index 0 atjava.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947)at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849)at java.time.LocalDateTime.parse(LocalDateTime.java:492)at test.main(Test.java:20)
查看完整描述

1 回答

?
精慕HU

TA貢獻1845條經(jīng)驗 獲得超8個贊

這是 Java 8 中的一個錯誤。


Java 8 的解決方法

? ? DateTimeFormatter globalFormat = new DateTimeFormatterBuilder()

? ? ? ? ? ? .appendPattern("yyyyMMddHHmmss")

? ? ? ? ? ? .appendValue(ChronoField.MILLI_OF_SECOND, 3)

? ? ? ? ? ? .toFormatter();

? ? String input = "2019082905020425";

? ? String adaptedInput = input + "0";

? ? LocalDateTime currentDateTime = LocalDateTime.parse(adaptedInput, globalFormat);

? ? System.out.println("Parsed date and time: " + currentDateTime);

此代碼片段的輸出為(在 jdk-1.8.0_121 上測試):


解析的日期和時間:2019-08-29T05:02:04.250


Java 8 無法分隔整數(shù)字段(如)ss和小數(shù)字段(如),SS而它們之間沒有任何分隔符。解決方法是將分數(shù)也解析為整數(shù)。您的字符串包含百分之一秒,并且沒有內(nèi)置整數(shù)字段。因此,我附加一個額外的0(零),以便我們得到毫秒,然后用于ChronoField.MILLI_OF_SECOND解析。


這是否真的是一個錯誤可能還有爭議。文檔中從未嚴格承諾它應(yīng)該有效,但這似乎是許多人的期望,無論如何他們在 Java 9 中修復(fù)了它。


我又進行了一項更正,您需要檢查這是否是您想要的更正:小寫字母hh表示從 01 點到 12 點之間的 AM 或 PM 內(nèi)的小時。如果您打算這樣做,則需要指定是要 AM 還是 PM。相反,我假設(shè) 05 是一天中從 00 到 23 的一個小時。使用大寫字母HH來解析它。

這是一個選項,可以完全節(jié)省我們的顯式格式化程序:


? ? String input = "2019082905020425";

? ? String adaptedInput = input.replaceFirst(

? ? ? ? ? ? "^(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})$",

? ? ? ? ? ? "$1-$2-$3T$4:$5:$6.$7");

? ? LocalDateTime currentDateTime = LocalDateTime.parse(adaptedInput);

結(jié)果和以前一樣。就我而言,我發(fā)現(xiàn)后一種代碼更難閱讀和維護。另外,一旦您遷移到 Java 9 或更高版本,我認為上面的第一個代碼片段可以更直接地返回到您開始的代碼,這就是您最終想要的。選擇您喜歡的解決方案。


該代碼適用于 Java 9 及更高版本

在 Java 9 及更高版本上,我們只需要從hh到進行更改即可使問題中的代碼正常工作。HH


查看完整回答
反對 回復(fù) 2023-07-28
  • 1 回答
  • 0 關(guān)注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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