0
String = 26/8/2013 15:59;

この日付を GMT に変換したいのですが、以下のコードを適用すると、GMT ではなく EEST 時間が取得されます。

DateFormat df = new SimpleDateFormat("dd/MM/yyyy h:m");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
df.parse(newDate);
Log.i(tag, df.parse(newDate).toString());

出力:

Mon Aug 26 18:59:00 EEST 2013

どうしたの ?

4

3 に答える 3

2

解析は正しいです。異なるのは、toString() を作成するときに表示するために使用されるロケールのタイム ゾーンだけです。フォーマットされた出力を使用して、正しいフォーマットを示しました。詳細の例は次のとおりです。

final String time = "26/8/2013 15:59";
TimeZone timeZone = TimeZone.getTimeZone("UTC");
final String REQUEST_DATE_FORMAT = "dd/MM/yyyy h:m";

DateFormat format = new SimpleDateFormat(REQUEST_DATE_FORMAT);
Date localDate = format.parse(time);

// localDate.toString()
// PRINT. Mon Aug 26 15:59:00 EEST 2013

Calendar cal = Calendar.getInstance(timeZone);
cal.setTime(localDate);

format.setTimeZone(timeZone);
final String utcTime = format.format(cal.getTime());
// PRINT. 26/08/2013 12:59
于 2013-08-26T13:27:22.373 に答える
0

以下のアプローチを使用する必要があると思います: Date myDate = new Date();

Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
calendar.setTime(myDate);
Date time = calendar.getTime();
SimpleDateFormat outputFmt = new SimpleDateFormat("MMM dd, yyy h:mm a zz");
String dateAsString = outputFmt.format(time);
System.out.println(dateAsString);
于 2015-05-19T18:22:58.030 に答える
0

本当に何も問題はありません。UTC タイムゾーンとして解釈された日時文字列を正常に解析しています。

ログに出力すると、要求したものが得られます-Date.toString()タイムゾーンを含む現在のロケール設定にフォーマットされた日付が返されます。UTC と EEST の差は 3 時間です。

他のタイムゾーンを表示するようにフォーマットする場合は、必要なタイムゾーンに構成されている を介して渡しformat()ますSimpleDateFormat

于 2013-08-26T13:22:32.910 に答える