在Java文档中,Calendar.HOUR
应该以12小时格式返回小时,并且Calendar.HOUR_OF_DAY
应该以24小时格式返回小时,但是这两个都以12小时格式返回。
我的代码:
Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
System.out.println("hour: " + hour);
有一个问题已经和我的类似,但是有一个特定的时间,我正在尝试在当前时间进行。这个问题在这里Java HOUR和HOUR_OF_DAY都返回12小时时间
编辑:
如果重要的话,这会在Windows上的Eclipse中,Windows上的cmd.exe以及Ubuntu上的Terminal中发生。
编辑2
现在我感觉很蠢...我没有意识到我有多个实例调用当前时间,而我正在寻找错误的实例,即HOUR_OF_DAY,但是我在控制台中看到的那个实例只是被发布HOUR ...感谢您对评论的帮助以及对自己帖子的修改,这使我意识到自己的错误
设置小时时,重要的是使用HOUR_OF_DAY
和24小时表示法,或者使用HOUR
和提供AM_PM
字段...
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 17);
System.out.println(c.get(Calendar.HOUR_OF_DAY));
System.out.println(c.get(Calendar.HOUR));
System.out.println(c.get(Calendar.AM_PM));
c.set(Calendar.HOUR_OF_DAY, 5);
System.out.println(c.get(Calendar.HOUR_OF_DAY));
System.out.println(c.get(Calendar.HOUR));
System.out.println(c.get(Calendar.AM_PM));
将打印...
17
5
1 // PM
5
5
0 // AM
当我使用
c.set(Calendar.HOUR, 17);
System.out.println(c.get(Calendar.HOUR_OF_DAY));
System.out.println(c.get(Calendar.HOUR));
System.out.println(c.get(Calendar.AM_PM));
我知道了
5
5
0 // AM
这意味着API已过滤了结果并进行了内部更正。非常重要的一点是,使用正确的字段输入正确的值,因为Calendar
可以滚动的值显示合适的值...
如果我添加c.setLenient(false);
,它将抛出一个java.lang.IllegalArgumentException: HOUR
因为17
无效的值HOUR
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句