【发布时间】:2016-02-23 03:24:27
【问题描述】:
当您尝试翻转 DST 开始或结束的日期时,会出现此问题。例如,我们可以使用“America/New_York”时区将 01/11/2015 设置为日历(EDT 更改为 EST 的那一天)并尝试滚动:
TimeZone timeZone = TimeZone.getTimeZone("America/New_York");
Calendar cal = Calendar.getInstance(timeZone);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z");
formatter.setTimeZone(timeZone);
cal.set(Calendar.YEAR, 2015);
cal.set(Calendar.MONTH, 10);
cal.set(Calendar.DAY_OF_MONTH, 1);
for (int i = 0; i < 24; i++)
{
cal.roll(Calendar.HOUR_OF_DAY, 1);
System.out.println("Formatted date: " + formatter.format(cal.getTime()));
}
这是结果:
...
格式化日期:2015.11.01 22:08:32 EST
格式化日期:2015.11.01 23:08:32 EST
格式化日期:2015.11.01 01:08:32 EDT
格式化日期:2015.11.01 01:08:32 EST
格式化日期:2015.11.01 02:08:32 EST
...
【问题讨论】: