2014-12-13 62 views
1

我是通過date4j homepage閱讀和談論與Java的Calendar類的問題時,規定如下:java.util.Calendar - 需要同時設置HOUR和HOUR_OF_DAY?

日曆有兩個項目指的是天,小時和HOUR_OF_DAY的時刻。例如,如果您需要將日曆對象的時間部分設置爲0,則必須同時設置HOUR和HOUR_OF_DAY。

但每當我需要重置日曆對象回,說,午夜時分,我永遠不會設置小時,HOUR_OF_DAY爲0,只是HOUR_OF_DAY。我從來沒有遇到任何問題。

我一直在做這個錯誤嗎?

如果有人可以對上述報價實際上意味着什麼,我將不勝感激。

回答

1

如果您設置了Calendar.HOUR,那麼您還必須設置Calendar.AM_PM字段。您不能簡單地將小時設置爲9,並且相信您已將其設置爲晚上9點。這在從傍晚運行而不是在早晨運行時起作用,當從當前時間的副本設置時。

我覺得這個評論是關於如何設置Calendar.HOUR不夠好的經驗,所以他們也設置了Calendar.HOUR_OF_DAY,它修復了Calendar.HOUR問題。但評論本身並不完全準確。

Calendar.HOUR_OF_DAY並不明確。將HOUR_OF_DAY設置爲21將使其成爲晚上9點。

+0

我認爲是*力量*是什麼,他們都提到,但是當你讀了評論,他們明確聲明只是不完全正確的,設定的時間時,回0您必須將HOUR和HOUR_OF_DAY都設置爲0. – JDJ 2014-12-13 18:51:38

+0

從Java 7開始,文檔將此解釋爲不必要:如果HOUR_OF_DAY是最新的字段集,則它優先於「AM_PM + HOUR」。 http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#time_resolution「如果日曆字段值中存在任何衝突,則Calendar將優先級設置爲最近設置的日曆字段」。然後它會特別顯示HOUR_OF_DAY與「AM_PM + HOUR」。 – ToolmakerSteve 2015-09-06 20:14:43

1

他們很簡單,沒有什麼可以混淆的。

HOUR用於12小時制,這就是爲什麼您必須設置AMPM以指示是白天還是中午。

HOUR_OF_DAY是24小時制時鐘,因此您不必設置AMPM字段。

聲明有關MUST取得該網站是