2016-06-21 6 views
0

Androidのzzzの基本的なJava形式を使用してタイムゾーンを追加しています。 00および5.1.1にESTとしてどの:だから3文字のタイムゾーンIDがAndroidで矛盾しています

public static final String DISPLAY_DATE_FORMAT = "MMMM dd, yyyy 'at' hh:mm:ss a zzz";  
SimpleDateFormat formatter = new SimpleDateFormat(
        DISPLAY_DATE_FORMAT); 
formatter.setTimeZone(timeZone); 
date = formatter.format(formattedDateTime); 

以下のコード私はplatfromバージョンで

それはGMT-04を示している6.0.1の両方で取得していた結果を見つけてください。奇妙なことです。

私はまた、次のコード

timeZone.getDisplayName(timeZone.inDaylightTime(formattedDateTime),TimeZone.SHORT); 

を使用してみましたし、同じ結果を得ました。私はGMTの値の代わりにESTを得ることができる方法はありますか? 私はこの方法がoracleによってdepricatedであることを知っていますが、私はまだ3文字のtimezoneIDを得ることができます何らかの方法です。

+0

参照:http://stackoverflow.com/questions/2807197/get-three-letter-short-timezone-name-as-opposed-to-fourletter –

答えて

0

主流メディアによく見られる3-4文字の略語は、真のタイムゾーンではありません。それらは標準化されていません。彼らはユニークではありません!

現代の日時ライブラリは、代わりに適切なタイムゾーン名を使用してこれらの略語を使用しません。

this list of proper time zone namesを参照してください。それらはcontinent/regionの形式です。たとえば、America/MontrealおよびAsia/Kolkataです。

2016-06-11T12:34.56から07:00 [アメリカ/ Los_Angeles]

あなたは悪名高い厄介と設計が不十分です古い日時のクラスを使用しています。それらは、Java 8以降に組み込まれたjava.timeフレームワークに取って代わられています。 java.timeの機能の多くは、Java 6 & 7(ThreeTen-Backport)に移植され、さらにAndroid(ThreeTenABP)に適合しています。

関連する問題