2016-08-15 2 views
0

SimpleDateFormatを使用して、 "US/Mountain"、 "US/Pacific"などのタイムゾーンを解析するにはどうすればよいですか?SimpleDateFormat.javaでタイムゾーンを解析する

次のコードは、

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の)を使用することができるはずはParseExceptionをスローしますが、私はありませんよSimpleDateFormat.javaが探している文字列やパターンのリストを確認してください。

私は、さまざまなJavaライブラリを使用することができますか、タイムゾーンと文字列の限られたセット(Uugh)でこれを自分自身で行うこともできます。

私の質問は実際に適切な使用かSimpleDateFormatについてですか?

答えて

2

AFAIKのzは、タイムゾーンの「表示名」を参照しています。

あなたは、おそらくこのようなものは十分であろう

方法getDisplayName()を使用して、表示名を取得TimeZone.getTimeZone("US/Mountain")を使用しようとすることができます。

答えとして私のコメントを投稿
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)); 
+0

はTimeZone.getTimeZone(「米国/マウンテン」)は「山岳標準時を返すように見えます"SimpleDateFormatを使用して" US/Mountain "を解析する方法はありませんか? – Ervin

+0

@ Ervinはそれほど確かではありません。しかし、大雑把にはソースコードを読んでください。ゾーンidがわからない場合にのみ可能であるようです。しかし、コード自体は、書式設定の値として表示名を使用します。だから、私はあなたが表示名にこだわるべきだと思います。 –

-1

:私はあなたが 'あなたのパターン内の1つの冗長を持っていると信じてい ))

関連する問題