在業務開發中,頻繁需要計算「本週一」、「上月最後一天」、「季度首尾日」等時間區間。下文提供一個基於 Calendar 與 SimpleDateFormat 的完整工具類 TimeTest,涵蓋日、週、月、季、年等各類常用時間獲取邏輯,並包含兩日期間天數差、星期判斷等輔助方法,可直接複製到專案中使用。
Date、星期名稱獲取public String getDefaultDay() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1); // 設為當月 1 號
lastDate.add(Calendar.MONTH, 1); // 加一個月 → 下月 1 號
lastDate.add(Calendar.DATE, -1); // 減一天 → 本月最後一天
return sdf.format(lastDate.getTime());
}
public static String getTwoDay(String sj1, String sj2) {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date1 = fmt.parse(sj1);
Date date2 = fmt.parse(sj2);
long diff = (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000);
return String.valueOf(diff);
} catch (Exception e) {
return "";
}
}
若專案使用 Java 8+,建議遷移至 java.time 套件(LocalDate、TemporalAdjusters),線程安全且 API 更直觀。此類適合維護舊版 Java 專案或快速原型開發。