java.util.Date 與 java.util.Calendar 的月份會是 zero-based. 以下這些資料給了答案: 因為當初, 所以現在...- The Java International API: Beyond JDK 1.1 (Why is January zero?)
- International Calendars in Java (January is still Zero)
這或許不是什麼太大的問題 (雖然這是個不該犯的錯), 反正只要記住月份跟別人不一樣, "規定" 是 zero-based 就好了... 直到自己想要開發一些跟日期時間有關的 library 時, 我遇到了與 JavaSoft 當初由
Date 提出 Calendar 時一樣的掙札 - 我的 API 要採 zero-based 或 one-based?如果我採用 one-based, 就代表別人不能再用
Calendar 的常數來使用我的 API. 沒辦法, 只好跟著錯下去, 因此最後我還是決定一起淌這個混水, 採用 zero-based這真是太可怕了, 不得不警惕自己在規劃 API 時一定要很謹慎, 因為 API 這種東西一旦對 caller 承諾了, 就難以收回... 真是一言既出、駟馬難追!!
沒有留言:
張貼留言