HOUR_OF_DAY日历问题

时间:2015-09-03 10:49:16

标签: java calendar simpledateformat

在调试模式下,我看到我解析的值等于"2015-09-01 22:00"。当我创建日历时,我看到HOUR_OF_DAY等于22。 但是,interval等于10而不是22.错误在哪里?

import java.util.Calendar;
import java.text.SimpleDateFormat;

public class HelloWorld{

     public static void main(String []args){
         try {
        Calendar c = Calendar.getInstance();
        c.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm").parse("2015-09-01 22:00"));
        int interval = c.get(Calendar.HOUR_OF_DAY-1);
        System.out.println(interval);
         }
         catch (Exception ex)
         {
             ex.printStackTrace();
         }
     }
}

1 个答案:

答案 0 :(得分:2)

您并未要求HOUR_OF_DAY值 - 您要求的HOUR_OF_DAY - 1值实际上对应于Calendar.HOUR - 12小时版本:

  

获取和设置的字段编号,表示上午或下午的小时。小时用于12小时制(0 - 11)。中午和午夜由0表示,而不是由12表示。例如,在10:04:15.250 PM,HOUR为10。

只需将代码更改为

即可
int interval = c.get(Calendar.HOUR_OF_DAY);

......一切都会好的。