第一个夏令时日的JAVA Calendar.set(Calendar.HOUR_OF_DAY,0)

时间:2015-10-29 13:28:13

标签: java calendar dst

我遇到cal.set(Calendar.HOUR_OF_DAY, 0);的问题。 如果我使用第一个DST日,此方法将返回前一天23:00:00而不是当前00:00:00。

我的时区是巴西/东部

我的代码:

final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a z");
Date day = getFirstDayDST();
Calendar cal = Calendar.getInstance();
cal.setTime( day );
System.out.println( sdt.format( cal.getTime() ) );
cal.set( Calendar.HOUR_OF_DAY, 0);
System.out.println( sdt.format( cal.getTime() ) );

输出:

"18/10/2015 12:00:00 PM GMT-02:00"
"17/10/2015 11:00:00 PM GMT-03:00"

但我期待:

"18/10/2015 12:00:00 PM GMT-02:00"
"18/10/2015 00:00:00 PM GMT-02:00" OR "18/10/2015 01:00:00 PM GMT-02:00"

我如何解决这个问题?

1 个答案:

答案 0 :(得分:-1)

错误在于你打印“day.getTime()”。你必须打印cal.getTime();)