簡體   English   中英

為什么Joda DateTimeFormatter無法解析時區名稱('z')

[英]Why Joda DateTimeFormatter cannot parse timezone names ('z')

來自DateTimeFormatter javadoc

區域名稱:無法解析時區名稱('z')。

因此時區解析如下:

System.out.println(new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy").parse("Fri Nov 11 12:13:14 JST 2010"));

在Joda無法做到:

DateTimeFormatter dtf = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss z yyyy");
System.out.println(dtf.parseDateTime("Fri Nov 11 12:13:14 JST 2010"));
//Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "Fri Nov 11 12:13:14 JST 2010" is malformed at "JST 2010"
//at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:673)

我認為原因是'z'時區名稱是傳統的(不標准化)和含糊不清的; 即根據您的原籍國,它們意味着不同的東西。 例如,“PST”可以是“太平洋標准時間”或“巴基斯坦標准時間”。

如果您有興趣, 這個網站有一個包含大量時區名稱的列表。 發現存在歧義的案例並不困難。

可能是因為某些時區縮寫是不明確的,並且解析器無法知道哪個時區是什么意思。

它當然也可能是你在與Joda合作一段時間后發現的微小,奇怪的嘀嗒聲和缺失的功能之一。

縮短的時區確實含糊不清,Joda進一步刪除了對它們的支持,如DateTimeZone javadoc中所述

暫無
暫無

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

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