2016-08-03 7 views
0

これは多くの人には同様の質問ですが、自分のコードで間違っていることに固執しています。サーバのタイムスタンプをAndroidのローカルDateTimeに変換する

サーバーにはアメリカのタイムスタンプがあり、私はインドに住んでいます。フェッチされたタイムスタンプを自分のタイムゾーン基準に変換する必要があります。 私はこの次のコードブロックを使用:

SimpleDateFormat formatter = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");  
Date date = formatter.parse(serverDate); //Server Date    

     SimpleDateFormat sdfIndia = new SimpleDateFormat("dd-M-yyyy hh:mm:ss"); 
     TimeZone tzInIndia = TimeZone.getDefault(); 
     sdfIndia.setTimeZone(tzInIndia); 

     String sDateInIndia = sdfIndia.format(date); //Date Output in String Format 

出力時間は、入力された時間と同じです。なぜそれは同じになるのですか? 私が間違ったところで助けてください?

+0

多分これは役立ちます:http://stackoverflow.com/a/1661389/598641 – Axxxon

+0

@Axxxonよく私の問題は時間の変換に関するもので、コードの影響を受けません。入力時間は出力時間と同じです。 –

答えて

0

以下のコードは、米国/東部とアジア/ドバイのタイムゾーンの日付時刻を出力します。この記事の時点で

Date today = new Date(); 
    DateFormat formatter= new SimpleDateFormat("dd-M-yyyy hh:mm:ss a"); 
    formatter.setTimeZone(TimeZone.getTimeZone("US/Eastern")); 
    System.out.println("US/Eastern Time: " + formatter.format(today)); 

    formatter.setTimeZone(TimeZone.getTimeZone("Asia/Dubai")); 
    System.out.println("Asia/Dubai Time: " + formatter.format(today.getTime())); 

出力:

米国/東部時間:2016年3月8日11時18分05秒AM

アジア/ドバイ時間:03-8- 2016年7時18分05秒PM

タイムゾーンIDが "米国/東" と "アジア/ドバイは"

String[] ids = TimeZone.getAvailableIDs(); 
    for (String id : ids) { 
     System.out.println(TimeZone.getTimeZone(id).getID()); 
    } 
からです
+0

あなたのクイック返信のおかげでありがとう。私は自分の地域のタイムゾーンIDを知っています。私は 'TimeZone.getDefault();'を使っています - 同じです! しかし、問題は私が静的な日時フォーマットを使用していることです。例えば、 "03-8-2016 11:18:05"という入力はアメリカのタイムゾーンを持っています。その文字列を地域の時間に変換したい。 私のコードは、同じ入力を吐き出すだけです。 –

+0

あなたのタイムゾーンを「アジア/ドバイ」とし、時間文字列03-8-2016 11:18:05を得て、03-8-2016 07:18:05が正しいとしますか? –

+0

ええ、それは正しい。あなたが示したコンバージョンの問題は、それがアメリカ/イースタンの午前の時間を与え、あなたはアジア/ドバイの夕方の時間を得ているということです。 –

関連する問題