Calendar c = Calendar.getInstance();
int month = c.get(Calendar.MONTH); // 今天是 12 月,輸出 11
Calendar.MONTH 為 0 基索引:
設計初衷:便於數組索引,如 `monthNames[cal.get(Calendar.MONTH)]`。
int month = c.get(Calendar.MONTH) + 1; // 1-12
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_MONTH); // 1-31
import java.time.LocalDate;
import java.time.Month;
LocalDate today = LocalDate.now();
int year = today.getYear(); // 2024
int month = today.getMonthValue(); // 1-12 (直觀!)
Month monthEnum = today.getMonth(); // DECEMBER (枚舉類型安全)
int day = today.getDayOfMonth(); // 1-31
// 格式化輸出
String formatted = today.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日")); // 2024年12月28日
| 特性 | Calendar | LocalDate |
|---|---|---|
| 月份索引 | 0-11 (易錯) | 1-12 (直觀) |
| 線程安全 | 非線程安全 | 不可變,線程安全 |
| API 設計 | Getter/Setter 混雜 | 流式、不可變 |
| 時區處理 | 隱式默認時區 | 顯式 `ZonedDateTime` |
| 格式化 | SimpleDateFormat (非線程安全) | DateTimeFormatter (線程安全) |