SimpleDateFormat.parse () ignoruje liczbę znaków we wzorcu
Próbuję przeanalizować ciąg znaków, który może mieć różne formaty drzewa. Nawet jeśli łańcuch nie powinien pasować do drugiego wzoru, to w jakiś sposób to robi i dlatego zwraca nieprawidłową datę.
To mój kod:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Start {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
try{
System.out.println(sdf.format(parseDate("2013-01-31")));
} catch(ParseException ex){
System.out.println("Unable to parse");
}
}
public static Date parseDate(String dateString) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
Date parsedDate;
try {
parsedDate = sdf.parse(dateString);
} catch (ParseException ex) {
try{
parsedDate = sdf2.parse(dateString);
} catch (ParseException ex2){
parsedDate = sdf3.parse(dateString);
}
}
return parsedDate;
}
}
Z wejściem2013-01-31
Dostaję wyjście05.07.0036
.
Jeśli spróbuję przeanalizować31-01-2013
lub31.01.2013
dostaję31.01.2013
zgodnie z oczekiwaniami.
Uznałem, że program da mi dokładnie takie samo wyjście, jeśli ustawię takie wzory:
SimpleDateFormat sdf = new SimpleDateFormat("d.M.y");
SimpleDateFormat sdf2 = new SimpleDateFormat("d-M-y");
SimpleDateFormat sdf3 = new SimpleDateFormat("y-M-d");
Dlaczego ignoruje liczbę znaków w moim wzorze?