"2017-9-21 23:59"发生了什么?

Nar*_*ges 3 java calendar date

我用了一个压延器,每次加一分钟.但在"2017-9-21 23:59"日期发生了一些奇怪的事情.这个日期回来了一个小时.它的行为就像日期节省时间,但保存时间日期不得发生.

这是我的代码和输出:

GregorianCalendar fromCalendar = new GregorianCalendar(2017, 8, 21, 22, 58);

    for (int i = 0; i < 120; i++) {
        System.out.println(fromCalendar.get(Calendar.YEAR) + "-"
                + (fromCalendar.get(Calendar.MONTH) + 1) + "-" +   fromCalendar.get(Calendar.DAY_OF_MONTH) + " "
                + fromCalendar.get(Calendar.HOUR_OF_DAY) + ":" + fromCalendar.get(Calendar.MINUTE) + "      ");
        fromCalendar.add(Calendar.MINUTE, 1);
    }
Run Code Online (Sandbox Code Playgroud)

输出:

.
.
.
2017-9-21 23:58     
2017-9-21 23:59     
2017-9-21 23:0      
2017-9-21 23:1      
2017-9-21 23:2  
.
.
.
Run Code Online (Sandbox Code Playgroud)

有什么简单的观点我误解了吗?

Jim*_*son 10

根据TimeAndDate.com DST页面,世界上只有一个国家的DST转换发生在2017/09/22 00:00:伊朗

因此,您必须使用伊朗的时区:Asia/Tehran.

  • 好的侦探:) (2认同)
  • 可以通过添加`fromCalendar.setTimeZone(TimeZone.getTimeZone("Asia/Tehran"))来验证;``之后`GregorianCalendar fromCalendar = ...` (2认同)