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

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

如何將“以下字符串”20190911T14:37:08.7770400”解析為日期格式

如何將“以下字符串”20190911T14:37:08.7770400”解析為日期格式

人到中年有點甜 2023-07-28 10:01:36
我正在嘗試將字符串解析為簡單的日期格式,但無法解析日期異常。有人可以嘗試幫助我解決這個問題嗎?  String dateFormatter ="20190911T14:37:08.7770400";  SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMDD'T'HH:mm:ss.SSSZZZZ");  //tried the below commnet also  //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-d'T'HH:mm:ss.SSSZZZZ");  System.out.println(sdf.parse(dateFormatter)); Error:        "Exception in thread "main" java.text.ParseException: Unparseable        date: "20190911T14:37:08.7770400" at        java.text.DateFormat.parse(DateFormat.java:366) at       com.sudha.test.sample_boot_example.TestString.main(TestString.java:20)
查看完整描述

3 回答

?
陪伴而非守候

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

格式的時區部分需要一個前導 + 或 - 字符。因此,您提供的字符串失敗了。如果您嘗試使用“20190911T14:37:08.777 + 0400”,它會起作用。

我沒有看到任何可與沒有符號的 4 位時區偏移一起使用的選項。?

查看完整回答
反對 回復 2023-07-28
?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

使用正確的格式代碼。

輸入意味著微秒范圍內的小數秒?

如果最后的數字代表秒的一小部分,則此代碼有效。用七位數字來表示秒的小數部分是不尋常的;3(3、6 或 9)的增量更為常見。但我們可以讓它發揮作用。

String input = "20190911T14:37:08.7770400" ;

DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuuMMdd'T'HH:mm:ss.SSSSSSS" ) ;?

LocalDateTime ldt = LocalDateTime.parse( input , f ) ;

ldt.toString(): 2019-09-11T14:37:08.777040

輸入意味著偏移?輸入錯誤。

如果最后的數字是以毫秒為單位的小數秒和與 UTC 的偏移量(小時數和分鐘數)的四位數字的組合,那么您的輸入就有錯誤。偏移量要么早于 UTC,要么晚于 UTC。因此偏移量必須包含加號+或減號-。您的輸入兩者都沒有,因此無法解析此類字符串的相對 UTC 偏移量。

ISO 8601

輸入字符串的格式很糟糕,顯然是對標準ISO 8601格式的笨拙修改。例如:2013-04-03T17:04:39.9437823+04:00.?我強烈建議您對這些數據的發布者進行有關 ISO 8601 標準的教育。不要發明新格式,堅持標準。

java.time類在解析/生成字符串默認使用ISO 8601格式。因此,根本不需要指定格式模式!

另一件事:如果您嘗試跟蹤時間軸上的時刻、實際點,那么您必須在輸入中包含偏移量或時區。如果沒有這種背景,我們不知道輸入是否意味著日本東京的下午 2 點或美國俄亥俄州托萊多的下午 2 點——兩個截然不同的時刻,相隔幾個小時。


查看完整回答
反對 回復 2023-07-28
?
ITMISS

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

String dateFormatter ="20190911T14:37:08.777+0400";


        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd'T'HH:mm:ss.SSSZZZZ");

        try {

            System.out.println(sdf.parse(dateFormatter));

        } catch (Exception ex) {

            System.out.println(ex);

        }

添加 + 應該可以,并檢查它是“yyyyMMdd”而不是“YYYYMMDD”。


查看完整回答
反對 回復 2023-07-28
  • 3 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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