我使用以下代码:
Calendar calendar = new GregorianCalendar(0,0,0);
calendar.set(Calendar.YEAR, 1942);
calendar.set(Calendar.MONTH, 3);
calendar.set(Calendar.DAY_OF_MONTH, 4);
Date date1 = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, -1);
Date date2 = calendar.getTime();
System.out.println(date1 + "\n" + date2);
此代码输出如下:
Sat Apr 04 00:00:00 EEST 1942
Fri Apr 03 01:00:00 EEST 1942
实际上我减去 1 天,时间应该保留。
但为什么输出的第二行包含 1 小时的时间,而它应该是 0?
EDIT:
目前我正在欧洲/赫尔辛基时区测试我的代码。
我想您使用的是芬兰时区。芬兰于1942年引入夏令时,将时钟从4月2日23:59:59调整为4月3日1:00:00。 4 月 3 日 0:00:00 到 0:59:59 的时间跨度不存在,因此 Java 日历尽力而为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)