最後我想到個很土炮的方法,反正字串傳進來是yyyyMMdd,那我就轉成數字,也就是"20230819" -> 20230819 然後減10000 就會變成20220819 若加100月份就會是9月
if((Integer.parseInt(date) - 10000 <= Integer.parseInt(date) || Integer.parseInt(date) <= Integer.parseInt(date) + 100)){
/** 內容已被和諧 **/
throw Exception;
}
「你這種作法在極端情況下,會出問題的。」
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd")
LocalDate date = LocalDate.parse(getDate(), dtf);
LocalDate localDate = LocalDate.now(ZoneId.of("Asia/Taipei")); //未來寫個Methods 依據國別判斷導入之時區
LocalDate plusMonths = localDate.plusMonths(1);
LocalDate minusYears = localDate.minusYears(1);
if(minusYears.compareTo(date) >= 0 || plusMonths.compareTo(date) <= 0){
/** 內容已被和諧 **/
throw Exception;
}
}
- 請把設計好的錯誤代號與訊息,狠狠地砸到前端廠商身上:)
public static void main(String[] args) {
// 建立兩個日期
Date date = new Date(108, 6, 11);
Date date1 = new Date(109, 3, 19);
// 宣告三個比較時間的變數
//時間小compareTo時間大
int num1 = date.compareTo(date1);
//時間大compareTo時間小
int num2 = date1.compareTo(date);
//同個時間compareTo同個時間
int num3 = date.compareTo(date);
// 列印結果
System.out.println("Num is:" + num1);
System.out.println("Num is:" + num2);
System.out.println("Num is:" + num3);
}
}
Num is:-1
Num is:1
Num is:0