使用SimpleDateFormat.java解析时区

时间:2016-08-15 13:39:51

标签: java simpledateformat

如何使用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 才能做到这一点?

2 个答案:

答案 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”))