以下是我的代码。
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。我在这里做错了什么?
感谢。
答案 0 :(得分:3)
Calendar.HOUR
,Calendar.MINUTE
和Calendar.SECOND
是public static int
类的Calendar
字段。他们的价值是
您的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
(或MINUTE
,SECOND
)只是一个指示符,用于指示我们要从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));