/**
* Validates a date in String data type according to the given date format.
*
* @param validDateFormat
* valid date format e.g. YYYY/MM/DD
* @param strDate
* - the date to be validated
* @return true if the date is valid according to the given format
*/
public static boolean isValidDate(final String strDate, final String validDateFormat) {
boolean result = true;
try {
if (StringUtils.isNotBlank(validDateFormat) && StringUtils.isNotBlank(strDate)
&& StringUtils.isNotEmpty(strDate)) {
dateValidator = new SimpleDateFormat(validDateFormat, Locale.ENGLISH);
dateValidator.setLenient(false);
dateValidator.parse(strDate);
Log.i(TAG, "***Date entered: "+ strDate +
"\nDate parsed back: "+dateValidator.format(dateValidator.parse(strDate)));
dateValidator = null;
}
else
{
result = false;
}
} catch (final ParseException e) {
result = false;
} catch (final IllegalArgumentException e) {
result = false;
} catch (final Exception e) {
result = false;
}
return result;
}
當我在輸入例:SimpleDateFormat的錯誤
boolean result = isValidDate("21/May/201l", "dd/MMM/yyyy");
//result = true
提醒的是,輸入的不是兩千年十一點,其兩百一個+一個字母「l」。
日誌:
***Date entered: 21/May/201l
Date parsed back: 21/May/0201
它不拋出任何異常,並不會使它假!!!!
WHYYYYYYYYYY !?
那麼,如何解決我的問題,任何線索?***國王'L',哈哈 – MarkJ 2011-05-13 00:49:11
@MarkJ:我發佈了一個想法。不太確定它是不是一個好的... – 2011-05-13 01:17:10
好吧,我一直通過使用reg-ex來解決這個問題,似乎它是一個語言錯誤,因爲它在數字前面接受'l'。 java錯誤 – MarkJ 2011-05-13 02:23:31