日期顯示需補零對齊,如 2023-04-05 而非 2023-4-5。
DecimalFormat df = new DecimalFormat("00"); // 兩位數,不足補零
int year = 2023, month = 4, day = 5;
String dateStr = df.format(year) + "-" + df.format(month) + "-" + df.format(day);
// 結果:2023-04-05
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
Date date = new Date(); // 或 Calendar.getInstance().getTime()
String dateStr = sdf.format(date);
// 結果:2023-04-05
// 也可直接格式化 Calendar
Calendar c = Calendar.getInstance();
String dateStr = sdf.format(c.getTime());
LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String dateStr = date.format(formatter);
String dateStr = String.format(Locale.getDefault(), "%04d-%02d-%02d", year, month, day);
| 方法 | 適用場景 | 優點 |
|---|---|---|
| SimpleDateFormat | 日期對象格式化 | 標準、支持解析、本地化 |
| DateTimeFormatter | Java 8+ 新項目 | 線程安全、不可變、功能豐富 |
| DecimalFormat | 純數字補零 | 簡單直接 |
| String.format | 拼接場景 | 格式化功能強大 |
Calendar.MONTH 從 0 開始,顯示時需 +1SimpleDateFormat 非線程安全,併發環境用 ThreadLocal 或創建新實例Locale 避免不同地區格式差異日期格式化首選 SimpleDateFormat 或 DateTimeFormatter,純數字補零用 DecimalFormat("00") 或 String.format("%02d")。