2017-08-22 147 views
1

我有一個時間字符串,如下所示:20170822T194135+00。如果我理解正確,這稱爲基本ISO:8601格式。如何用Joda解析基本(短/緊湊)ISO:8601字符串?

當我嘗試使用ZonedDateTime解析它時,它會拋出異常,抱怨它無法解析它。

那麼,如何將此字符串轉換爲有效的Joda日期時間對象?

我是否需要構建手動「格式」來解析它(考慮到它是標準格式,這會很愚蠢)?


拼命,我其實是試圖實現自定義格式:

const time = ZonedDateTime.parse(timeString, DateTimeFormatter.ofPattern(`yyyyMMdd'T'HHmmssZ`)); 

但是,它會引發錯誤的15列。看起來它不能解析時區。我的實現是否正確?我如何使它工作?

回答

1

我可以使用docs(該模式接受像+00這樣的偏移量)中描述的模式x

然後我直接解析以一個ZonedDateTime

const formatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmssx"); 

const time = ZonedDateTime.parse("20170822T194135+00", formatter); 

所得time變量具有等同於2017-08-22T19:41:35Z值。

內置的格式化程序(如​​)無法解析此格式,所以唯一的辦法似乎是創建格式化程序。

+1

謝謝,看起來像「x」說明符正是我錯過了。 –