どのように印刷していCalendar
ますか?
GMT 時刻を取得していると思いますが、これは 1 時間遅れているため、午前 0 時に 1 日遅れています。
検討:
public static void main(String[] args) throws Exception {
int year = 2012;
int month = 2; // eg. for march
int day = 31;
int hrs = 0;
int min = 18;
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Berlin")); // GMT+1
cal.set(year, month, day, hrs, min);
long time = cal.getTimeInMillis();
System.out.println(time);
cal.setTimeInMillis(time);
final DateFormat sdf = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.FULL, SimpleDateFormat.FULL);
System.out.println(sdf.format(cal.getTime()));
}
出力:
1333145915825
Friday, 30 March 2012 23:18:35 o'clock BST
に a を追加すると、次のTimeZone
ようになりDateFormat
ます。
final DateFormat sdf = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.FULL, SimpleDateFormat.FULL);
sdf.setTimeZone(TimeZone.getTimeZone("Europe/Berlin"));
System.out.println(sdf.format(cal.getTime()));
私は得る:
1333145887761
Saturday, 31 March 2012 00:18:07 o'clock CEST
したがって、はフォーマットするときにSimpleDateFormat
デフォルトを使用し、を呼び出すときは使用しません。TimeZone
TimeZone
Calendar
Calendar.getTime()