Java日历时段返回12小时格式

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