如何使用SimpleDateFormat从" US / Mountain"," US / Pacific",...等解析时区?
以下代码抛出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库,甚至可以自己做一些有限的时区和字符串(呃)。
但我的问题是关于正确使用还是SimpleDateFormat 才能做到这一点?
答案 0 :(得分:2)
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));
答案 1 :(得分:-1)
发表评论作为答案: 我相信你的模式中有一个多余的“a”))