一、校驗年月日格式
對於年月日格式的日期,可以通過對輸入的字符串使用正則表達式進行校驗,確保格式正確。以下代碼示例展示了如何使用正則表達式校驗日期是否符合”yyyy-MM-dd”格式:
/**
* 判斷日期字符串是否符合指定格式
*
* @param str 日期字符串
* @param pattern 日期格式,例如"yyyy-MM-dd"
* @return true:符合指定格式;false:不符合指定格式
*/
public static boolean isValidDate(String str, String pattern) {
if (str == null || pattern == null) {
return false;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
Date date = sdf.parse(str);
// 校驗輸入的日期是否和原日期一致,防止輸入的非法日期轉換成合法日期
if (!str.equals(sdf.format(date))) {
return false;
}
} catch (ParseException e) {
return false;
}
return true;
}
二、校驗閏年
在校驗日期是否合法時,需要考慮到閏年的情況。根據閏年的定義,能被4整除但不能被100整除,或者能被400整除的年份為閏年。以下代碼示例展示了如何校驗一個年份是否為閏年:
/**
* 判斷指定年份是否是閏年
*
* @param year 年份
* @return true:是閏年;false:不是閏年
*/
public static boolean isLeapYear(int year) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
return true;
} else {
return false;
}
}
三、校驗月份
在校驗日期是否合法時,需要校驗月份的取值範圍。對於月份,它必須大於等於1小於等於12。以下代碼示例展示了如何校驗一個整數是否為合法的月份:
/**
* 判斷指定整數是否為合法的月份
*
* @param month 月份
* @return true:是合法的月份;false:不是合法的月份
*/
public static boolean isValidMonth(int month) {
if (month >= 1 && month <= 12) {
return true;
} else {
return false;
}
}
四、校驗日
在校驗日期是否合法時,需要校驗日的取值範圍。對於日,它必須大於等於1小於等於所在月份的天數,同時要考慮閏年的情況。以下代碼示例展示了如何校驗一個整數是否為合法的日:
/**
* 判斷指定整數是否為合法的日
*
* @param year 年份
* @param month 月份
* @param day 日
* @return true:是合法的日;false:不是合法的日
*/
public static boolean isValidDay(int year, int month, int day) {
if (month == 2) {
if (isLeapYear(year)) {
if (day >= 1 && day = 1 && day = 1 && day = 1 && day <= 31) {
return true;
}
}
return false;
}
五、總結
本文從校驗年月日格式、校驗閏年、校驗月份、校驗日等幾個方面詳細闡述了如何使用Java校驗日期是否合法。通過以上方法可以有效地避免因輸入非法日期引起的程序異常,提高程序的可靠性和穩定性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/152526.html
微信掃一掃
支付寶掃一掃