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

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

在測試環境中解析異常,而在 Android 環境中工作正常

在測試環境中解析異常,而在 Android 環境中工作正常

千巷貓影 2023-04-19 10:32:23
我在 Android 中有一個非常簡單的指令:new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZ").parse("2019-07-24T21:27:09+02:00")相同的指令在真實設備上運行時會生成正確的輸出:一個 Date 對象,可以表示為Wed Jul 24 21:27:09 GMT+02:00 2019但是,當我在單元測試(使用 junit)中使用完全相同的指令時,它會給我 java.text.ParseException.我可以讓它工作刪除最后一個: (像這樣,“2019-07-24T21:27:09+0200”),但我想知道為什么。我知道他們使用不同的 JVM,但使用的 Android API 應該是相同的。
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

實施各不相同

我可以刪除最后一個:(像這樣,“2019-07-24T21:27:09+0200”),但我想知道為什么。我知道他們使用不同的 JVM,但使用的 Android API 應該是相同的。

SimpleDateFormat(a) &的行為Date沒有實際意義,因為您不應再使用這些類。他們真的那么糟糕。

(b) 在任何復雜的框架中,您可能會在實現之間看到這種細微的差異,尤其是當由不同的團隊構建時。遺留日期時間類的規范不包括諸如偏移量上的可選冒號之類的微小細節。這就是人生。

我希望您會發現java.timeThreeTen-Backport的行為差異要小得多,因為它們都是由同一個人 Stephen Colebourne 領導的。我不知道與 Android 26 及更高版本捆綁在一起的java.time的 Android 實現,但我還沒有聽說過任何差異。

因此,出于這個原因以及許多其他原因,我強烈建議使用java.time路線。

查看完整回答
反對 回復 2023-04-19
?
桃花長相依

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

Android 上的一些Java 類的實現與Oracle 的JDK 不同。這可能是由于最近針對谷歌的訴訟。因此,某些 Java API(主要是國際化和...日期格式)可能表現不同。如果該類的文檔沒有說明這是一種有效格式,您可以提交錯誤。



查看完整回答
反對 回復 2023-04-19
  • 2 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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