Java日历问题设置为12pm

Mik*_*679 6 java calendar

我正在创建一个Calendar实例(当前时间),然后设置小时分钟和上午/下午

Calendar now = Calendar.getInstance();

now.set(Calendar.HOUR,12);
now.set(Calendar.MINUTE,0);
now.set(Calendar.AM_PM,1);
Run Code Online (Sandbox Code Playgroud)

然后,如果我尝试从现在的Calendar实例中获取am/pm,它将错误地始终设置为am并提前1天.这似乎只发生在12小时而没有其他小时.这是什么问题?我设置它们的顺序是重要还是在第12小时的情况下,我应该使用24小时格式来设置'now'实例吗?是的我应该提到,这是在Android上.

mpr*_*vat 17

这是因为每天的一半都是从小时零到小时结束.数学上讲,没有第12个小时(即使我们在现实生活中一直使用它).那你设定的意思是在PM期间的小时零,所以:

    now.set(Calendar.HOUR, 0);
    now.set(Calendar.MINUTE,0);
    now.set(Calendar.AM_PM, Calendar.PM);
Run Code Online (Sandbox Code Playgroud)

通过将小时设置为12,您可以告诉日历(对或错,您必须要求Oracle工程师)将其设置为PM时段的第12个小时,这将是AM时段的0小时.第二天.

在半天的时间内只有12个小时,而且这个数字是零,所以从数学上讲,没有第12个小时.它是零.这有点直观,因为我们习惯说它是12:30,而不是0:30.