封裝了基於 Calendar、SimpleDateFormat 的豐富靜態/實例方法,涵蓋:
getNowTime("yyyy-MM-dd")getTwoDay("2008-12-1","2008-9-29")getAfterMonth(6)public String getMondayOFWeek() {
weeks = 0;
int mondayPlus = getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus);
Date monday = currentDate.getTime();
return DateFormat.getDateInstance().format(monday);
}
private int getMondayPlus() {
Calendar cd = Calendar.getInstance();
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 週一為首日
return (dayOfWeek == 1) ? 0 : 1 - dayOfWeek;
}
public String getDefaultDay() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);
lastDate.add(Calendar.MONTH, 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");
long day = 0;
try {
Date date = fmt.parse(sj1);
Date mydate = fmt.parse(sj2);
day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
} catch (Exception e) { return ""; }
return day + "";
}
TimeTest tt = new TimeTest();
System.out.println("本週一:" + tt.getMondayOFWeek());
System.out.println("本月最後一天:" + tt.getDefaultDay());
System.out.println("6個月後:" + TimeTest.getAfterMonth(6));
System.out.println("日期差天數:" + TimeTest.getTwoDay("2008-12-1","2008-9-29"));
java.util.Date/Calendar(Java 7 風格),Java 8+ 建議改用 java.time 套件(LocalDate、Period、TemporalAdjusters)更簡潔線程安全。weeks 為實例變數,多線程環境下需注意狀態污染,建議改為局部變數或無狀態設計。