簡體   English   中英

使用SimpleDateFormat.java解析時區

[英]Parsing time zone with SimpleDateFormat.java

如何使用SimpleDateFormat從“美國/山脈”,“美國/太平洋”,... etc解析時區?

以下代碼拋出一個ParseException

String pattern = "MM/dd/yyyyy hh:mm a zzzz";
String value = "7/18/2016 05:00 PM US/Mountain";
new SimpleDateFormat(pattern).parse(value);

根據http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#timezone

我應該能夠使用“ z”(或多個z)從文本中獲取時區,但是我不確定SimpleDateFormat.java正在查看什么字符串或模式列表。

我知道我可以使用不同的Java庫,甚至可以自己使用有限的時區和字符串集(ugh)。

但是我的問題確實是關於正確使用或SimpleDateFormat來做到這一點的?

在AFAIK中, z指時區的“顯示名稱”。

您可以嘗試使用TimeZone.getTimeZone("US/Mountain")然后使用方法getDisplayName()獲取其顯示名稱。

大概這樣就足夠了。

TimeZone tz = TimeZone.getTimeZone("US/Mountain");
String pattern = "MM/dd/yyyyy hh:mm a zzzz";
String value = "7/18/2016 05:00 PM " + tz.getDisplayName();
System.out.println(new SimpleDateFormat(pattern).parse(value));

發表我的評論作為答案:我相信您的模式中有一個多余的'a'))

暫無
暫無

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

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