Próbuję użyć tej funkcji, ale nie działa z tym przypadkiem '12/05/201a 'ktoś wie, dlaczego tak się stało?SimpleDateFormat nie działa zgodnie z oczekiwaniami
W moim teście używam tego System.out.println(isThisDateValid("12/05/201a", "dd/MM/yyyy"));
, a odpowiedź brzmiała: true
, ale oczekiwano, że wynik będzie fałszywy, ponieważ rok zawiera litery.
public static boolean isThisDateValid(String dateToValidate, String dateFromat)
{
if (dateToValidate == null)
{
return false;
}
SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
sdf.setLenient(false);
try
{
//if not valid, it will throw ParseException
Date date = sdf.parse(dateToValidate);
System.out.println(date);
} catch (ParseException e)
{
e.printStackTrace();
return false;
}
return true;
}
jego zajmuje '201' dla' roku'. Jeśli umieścisz wszystkie litery w miejscu roku, nie będzie parsować. Ponieważ oczekuje cyfry "1" zamiast "roku". – Satya
Oczekuje co najmniej jednej cyfry zamiast "roku". – Satya
@Reimeus: 'SimpleDateFormat' nie * ignoruje * liter, po prostu nie zużywa całego ciągu znaków. Oto przykład nie ignorowania liter: http://ideone.com/gnbTwy –