Java日历始终显示相同的时间

时间:2014-09-28 07:57:33

标签: java calendar

以下是我的代码。

public class TestCalendar {

public static void main(String[] args){
    int unique_id = Integer.parseInt("" + Calendar.HOUR + Calendar.MINUTE
            + Calendar.SECOND);

    System.out.println(unique_id);
}
}

Calendar.HOUR应该给我

  

public static final int HOUR get和set的字段编号,表示上午的小时或    下午。小时用于12小时制(0 - 11)。中午和午夜用0代表,而不是    例如,在下午10:04:15.250,HOUR是10。

运行此代码的次数无关紧要,它总是给我相同的unique_id。 (101213)我当地时间在我的机器上是下午1:30。我在这里做错了什么?

感谢。

5 个答案:

答案 0 :(得分:3)

Calendar.HOURCalendar.MINUTECalendar.SECONDpublic static int类的Calendar字段。他们的价值是

  • CALENDAR.HOUR:10
  • CALENDAR.MINUTE:12和
  • CALENDAR.SECOND:13。

您的String连接只是附加了这些值。要从Calendar中读取,您可以使用类似于

的内容
calendar.get(Calendar.HOUR);
calendar.get(Calendar.MINUTE);

答案 1 :(得分:3)

您的代码只是连接常量,日历定义以识别其中的某些字段。要获取这些字段的值,请调用Calendar.get()并将常量标识符作为参数传递:

public class TestCalendar {

public static void main(String[] args){
    Calendar c = Calendar.getInstance();
    int unique_id = Integer.parseInt("" + c.get(Calendar.HOUR) + c.get(Calendar.MINUTE)
            + c.get(Calendar.SECOND));

    System.out.println(unique_id);
}
}

上述方法可行,但结果将远离唯一ID。 要获取唯一标识某个时间点的ID(精确度为毫秒),请考虑Calendar.getTimeInMillis()

答案 2 :(得分:0)

Calendar.HOUR(或MINUTESECOND)只是一个指示符,用于指示我们要从Calendar实例中提取哪个字段,而不是值,即我们想要的“从日历对象中提取HOUR”,如下所示:

Calendar c = Calendar.getInstance();

int hour = c.get(Calendar.HOUR_OF_DAY); // in 24-hours,
                                        // or c.get(Calendar.HOUR) in 12-hours.
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);

int weekday = c.get(Calendar.DAY_OF_WEEK);
int weekOfYear = c.get(Calendar.WEEK_OF_YEAR);

答案 3 :(得分:0)

我不确定要求是什么,但如果你想要系统时间,那么你可以使用这个“System.currentTimeMillis()”

答案 4 :(得分:0)

对于那些仍然遇到问题的人,就像我一样,特别是当你想要多次打印时,你可能需要使用以下新内容:

System.out.println(""+new GregorianCalendar().get(Calendar.HOUR_OF_DAY)+":"+new GregorianCalendar().get(Calendar.MINUTE)+":"+new GregorianCalendar().get(Calendar.SECOND)+":"+new GregorianCalendar().get(Calendar.MILLISECOND));