我遇到了問題,因爲我試圖將日期傳遞給Calendar.before()和Calendar.after(),而不是傳遞日曆。爲什麼Calendar.before()和Calendar.after()接受對象值?
如果通過日期,這些方法總是返回false。
我遇到了問題,因爲我試圖將日期傳遞給Calendar.before()和Calendar.after(),而不是傳遞日曆。爲什麼Calendar.before()和Calendar.after()接受對象值?
如果通過日期,這些方法總是返回false。
這可能是因爲有人可以編寫Calendar
的子類,它可以處理各種數據類型,如Date,而不會破壞Calendar.before(Object)
或Calendar.after(Object)
方法簽名。 沒有其他很好的理由可以想到。所以可能你必須忍受它。
Calendar的子類仍然安全且自動地轉換爲日曆,因此這不是合理的理由。 – user2684301
@ user2684301: - 是的,我同意這不是一個有效的理由,但我想到了它。我認爲這可能沒有很好的理由! –
日曆和接收對象不作爲格式化字符串 ,使工作嘗試發送日期後:
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
cal.setTime(sdf.parse("Mon Mar 14 16:02:37 GMT 2011"));
Calendar.before(cal);
應該這樣做。
至於爲什麼 - 不認爲真的有一個很好的理由,因爲整個班級是複雜的超越理性。
該OP是問*爲什麼*,而不是*如何*。 – BLaZuRE
該方法首先檢查是否當「日曆的instanceof」。 javadoc是這樣說的,當且僅當是一個Calendar實例時。至於爲什麼,我不知道。 –
我相信沒有很好的理由。 Calendar API普遍認爲設計不佳。 JDK 8確實解決了所有問題,但很多都無法升級。 Joda時間是不能使用JDK 8的人的第三方替代品。 – user2684301