2016-10-12 2 views
0

UTCのタイムゾーンで設定されたカレンダーのインスタンスがありますが、UTCのサーバーと同期する必要があるため、UTCにする必要があります。DateオブジェクトにCalendar.getTime()を適用する

このカレンダーからDateオブジェクトを作成する必要があり、私はCalendar.getTime()を使用します。

しかし、私はDateオブジェクトをプリントアウトしようとしたとき、私は別のタイムゾーン(代わりにUTCのCEST)でそれを参照してください

TimeZone timeZone = TimeZone.getTimeZone("UTC"); 
Calendar cal = Calendar.getInstance(timeZone); 
cal.setTime(timeMillisecond); 
Date d = cal.getTime(); 
Log.d("TAG", d.toString()); 

EDIT:

私は、サーバーへの日付オブジェクトを渡し、私はUTCのタイムゾーンではなくCESTのタイムゾーンで取得します。

+0

'Date'オブジェクトにタイムゾーンがありません。ただの瞬間を表しています。 'Date.toString()'は、システムの現地時間帯でその瞬間を表示します。 –

+0

質問を編集しました。 – Stefano

+0

残念ながら、便利な方法ではありません。どのようにして日付をサーバーに渡しているのか分かりませんが、 'Date.toString()'を呼び出した結果を記録することができます - 私の前のコメントを見てください。 'Calendar'を使用しているコードでは何も役に立ちません。実際には' Date = new Date(timeMillisecond); 'が有効です。 –

答えて

0

sdfを使用してタイムゾーンを設定し、それに応じて解析することができます。

SimpleDateFormat sdf = new SimpleDateFormat(
      "yyyy-MM-dd HH:mm:ss"); 
sdf.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); 

try { 
          Date dt = sdf.parse(sdf.format(Calendar.getInstance())); 
         } catch (ParseException e) { 
          e.printStackTrace(); 
         } 

これは私のために働いた。

0

次のコードを試してください。それはあなたにUTCの日付を提供します。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy dd,MM hh:mm:ss", Locale.getDefault()); 
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
String utcTime = dateFormat.format(new Date(timeMillisecond)); 
Log.d("TAG", utcTime); 

それはあなたyyyyのddの日付を提供し、MMはHH:mm:ssのフォーマットをしかし、あなたはあなたの必要性に応じて、他のフォーマットを提供することができます。

+0

am/pm指定子も含めないと、ほとんどの場合、 'hh'を使いたくないでしょう。 –

関連する問題