2016-09-15 4 views
3

次のコードを使用して、UTC時刻をデバイスの現在のタイムゾーン時刻に変換しました。それはインド標準時(IST)で正常に動作します。しかし、デバイスのタイムゾーンがオーストラリアのシドニーの場合は、さらに1時間追加されます。SimpleDateFormatは、UTC時刻をオーストラリアのタイムゾーンに変換するときに1時間を追加します

例えば、私は2016-10-10T09:10:00のようなUTC時刻を与え、それは8:10 PMに変換されますが、実際には私は7:10 PMが必要です。

public static String convertToLocalTimeFormat(String utcDateTimeString) { 
    SimpleDateFormat simpleDateFormat; 
    String formattedDateString = ""; 

    simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault()); 

    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
    Date parsedDateObject; 
    try { 
     parsedDateObject = simpleDateFormat.parse(utcDateTimeString); 
     SimpleDateFormat expectedSimpleDateFormat = new SimpleDateFormat("hh:mm a", Locale.getDefault()); 
     formattedDateString = expectedSimpleDateFormat.format(parsedDateObject); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
     return formattedDateString; 
    } 
    return formattedDateString; 
} 
+0

夏時間ですか? – Tibrogargan

+0

@Tibrogarganはい...現在オーストラリアではオーストラリア東部標準時ですが、指定された日付は10月ですので、10月1日以降はオーストラリア東部夏時間があります。それで1時間が追加されます。しかし、今私が入力したのと同じ時間を示す必要があります。 – Ramprasad

答えて

0

私はすべての夏時間制度は、そのデバイス上で正しいかどうかを確認するには

System.out.println(expectedSimpleDateFormat.getTimeZone()); 

をしようと助言します。

関連する問題