[英]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.