でタイム ゾーンの問題が発生していSimpleDateFormat
ます。これが私のコードです:
TextView date_time = (TextView) view.findViewById(R.id.date_time);
SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.US);
Date date = null;
try {
date = df.parse(workout.getDate().toString());
System.err.println("position: " + position + " workout: " + workout.getDate().toString());
System.err.println("position: " + position + " date: " + date);
} catch (ParseException e) {
e.printStackTrace();
}
df = new SimpleDateFormat("EEEE, MMMMM dd", Locale.US);
date_time.setText(df.format(date));
この出力に注意してください。
position: 0 workout: Mon Aug 19 00:00:00 MDT 2013
position: 0 date: Sun Aug 18 23:00:00 MDT 2013
文字列が 8 月 19 日 (午前 0 時) の日付で (正しく) 始まるのがわかりますか? しかし、日付フォーマッタが機能した後、1 時間前の時刻が表示されます。これはタイムゾーンの操作であると想定していますが、修正方法がわかりません。「Z」にいくつかの異なる値 (「Z」、「ZZZ」、「ZZZZ」、および「ZZZZZ」を含む) を試しましたが、すべて同じ結果になります。タイムゾーンの問題だと思いますが、どちらの場合も「MDT」が表示されるので、そうではないかもしれません。
この1時間のシフトが起こらないようにするにはどうすればよいですか? ありがとう!
編集:非常にハックなソリューションですが、機能します:
try {
date = df.parse(workout.getDate().toString());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, 1);
date = cal.getTime();
} catch (ParseException e) {
e.printStackTrace();
}