簡體   English   中英

將xs:time with timezone解析為Joda LocalDate

[英]Parsing xs:date with timezone into Joda LocalDate

在將XML文檔中的日期和時間解析為JodaTime對象時,我使用一組通用的轉換實用程序,通常使用org.joda.time.format.ISODateTimeFormat提供的解析器和格式化程序。

這在大多數情況下都可以正常工作,但這次我看到的文檔的xs:date值格式為2010-08-19Z 這是一個完全有效的xs:date值,但我嘗試過的標准ISODateTimeFormat生成的LocalDate解析器都不會接受它。 我能找到的最接近的是ISODateTimeFormat.dateParser() ,它將接受相當奇怪的2010-08-19TZ ,但不是2010-08-19Z (注意T )。

這一切都非常令人惱火,因為Joda和XML Schema都應該嚴格遵守ISO日期/時間格式規則,但其中任何一個都不是,或者規范是模糊的。

在我承認失敗並手動滾動自定義格式之前,有人能指出我將讀取該值的ISODateTimeFormat -sourced解析器嗎?

我相信根據ISO-8601,'Z'是時間價值的一部分。 “T”分隔符僅用於創建組合的日期/時間值。 嚴格閱讀這意味着'Z'不能出現在沒有時間值的日期之后,這可能是空的,因此是“奇怪的” 2010-08-18TZ

這似乎是xs:date和ISO-8601定義之間的輕微阻抗不匹配。

編輯:我找到了ISO 8601的副本。 它沒有定義“時間分區日期”的概念,例如XML Schema Datatypes規范中定義的。

而不是從頭開始編寫一個簡單的包裝器,如何將帶有時區的xs:date實例轉換為相應的ISO-8601值(即只插入'T'),然后使用現有的ISODateTimeFormat.dateParser()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM