Bri*_*ica 5 java calendar hour
在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);
Run Code Online (Sandbox Code Playgroud)
有一个类似于我的问题,但是有一个特定的时间,我试图用当前的时间做这个.这个问题在这里java HOUR和HOUR_OF_DAY都返回12小时的时间
编辑:
如果重要,这将发生在Windows上的Eclipse,Windows上的cmd.exe和Ubuntu上的终端中.
编辑2
现在我感到愚蠢......我没有意识到我有多个调用当前时间的实例,而我正在查看错误的一个,这是HOUR_OF_DAY,但是我在控制台中看到的那个被发布了小时...感谢您在评论中的帮助和我自己的帖子编辑,这让我意识到自己的错误
Evg*_*eev 14
试试这个测试
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR, 17);
System.out.println(c.get(Calendar.HOUR_OF_DAY));
System.out.println(c.get(Calendar.HOUR));
Run Code Online (Sandbox Code Playgroud)
它打印
17
5
Run Code Online (Sandbox Code Playgroud)
Mad*_*mer 12
设置小时时,它对使用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));
Run Code Online (Sandbox Code Playgroud)
会印...
17
5
1 // PM
5
5
0 // AM
Run Code Online (Sandbox Code Playgroud)
我用的时候
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));
Run Code Online (Sandbox Code Playgroud)
我明白了......
5
5
0 // AM
Run Code Online (Sandbox Code Playgroud)
这意味着API已过滤结果并进行内部更正.使用正确的字段获得正确的值非常重要,Calendar因为它可以根据需要滚动值...
如果我添加c.setLenient(false);,它将抛出一个java.lang.IllegalArgumentException: HOUR因为17不是有效值HOUR