java.util.Calendar-需要设置小时和一天中的小时吗?

java.util.Calendar-需要设置小时和一天中的小时吗?,java,calendar,Java,Calendar,我正在通读,当谈到Java的Calendar类的问题时,它说明了以下内容: 日历有两项,分别表示一天中的小时、小时和一天中的小时。例如,如果需要将日历对象的时间部分设置为0,则必须同时设置一天中的小时和小时 但每当我需要将日历对象重置回午夜时,我从不将HOUR和HOUR_OF_DAY都设置为0,只将HOUR_OF_DAY设置为0。我从来没有遇到过任何问题 我一直在做错事吗 如果有人能解释一下上述引用的实际含义,我将不胜感激。如果您设置Calendar.HOUR,那么您还必须设置Calendar.

我正在通读,当谈到Java的
Calendar
类的问题时,它说明了以下内容:

日历有两项,分别表示一天中的小时、小时和一天中的小时。例如,如果需要将日历对象的时间部分设置为0,则必须同时设置一天中的小时和小时

但每当我需要将日历对象重置回午夜时,我从不将HOUR和HOUR_OF_DAY都设置为0,只将HOUR_OF_DAY设置为0。我从来没有遇到过任何问题

我一直在做错事吗


如果有人能解释一下上述引用的实际含义,我将不胜感激。

如果您设置Calendar.HOUR,那么您还必须设置Calendar.AM\u PM字段。你不能简单地将小时设置为9,然后相信你已经将其设置为晚上9点。当在晚上运行时,这似乎有效,但从当前时间的副本设置时,在早上不起作用

我认为这篇评论是关于如何设置Calendar.HOUR不够好的经验,因此他们也设置了Calendar.HOUR\u OF_DAY,这解决了他们的Calendar.HOUR问题。但评论本身并不完全准确


一天中的Calendar.HOUR并不那么模棱两可。将一天中的小时数设置为21使其成为晚上9点。

它们非常简单,没有什么可混淆的

HOUR
表示12小时制,因此必须设置
AM
PM
以指示是白天还是中午

HOUR\u OF_DAY
是24小时制,因此您不必设置
AM
PM
字段


网站关于
必须
的声明并不完全正确

我想这可能就是他们所指的内容,但是,当您阅读评论时,他们清楚地指出,当将时间设置回0时,您必须将HOUR和HOUR_OF_DAY都设置为0。Java 7的文档澄清了这一点,认为这是不必要的:如果HOUR_OF_DAY是最新的字段集,那么它优先于“AM_PM+HOUR”。“如果日历字段值中存在任何冲突,日历将为最近设置的日历字段提供优先级。”。然后它接着特别显示了一天中的小时与“上午下午+小时”。