Boa tarde,
Iniciei meus estudos e estou com uma grande dúvida. Apesar das leituras que fiz de validação de data em Java, ainda não consegui resolver meu problema.
Estou com um exercício onde há um método que lê um arquivo com extensão .csv e dentro dele há uma coluna com data.
public static void LerArquivos() {
String csvArquivo = "arquivo.csv";
BufferedReader conteudoCSV = null;
String linha = "";
String csvSeparadorCampo = ";";
boolean primeiraLinha = true;
try {
conteudoCSV = new BufferedReader(new FileReader(csvArquivo));
while ((linha = conteudoCSV.readLine()) != null) {
if (primeiraLinha) {
primeiraLinha = false;
continue;
}
String[] dados = linha.split(csvSeparadorCampo);
System.out.println(" " + dados[0] + " " + dados[1] + " " + dados[2] + " " + dados[3] + " "
+ dados[4] + " " + dados[5] + " " + dados[6] + " " + dados[7] + " " + dados[8] + " "
+ dados[9] + " " + dados[10] + " " + dados[11]);
}
} catch (FileNotFoundException e) {
System.out.println("Arquivo não encontrado: \n" + e.getMessage());
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("IndexOutOfBounds: \n" + e.getMessage());
} catch (IOException e) {
System.out.println("IO Erro: \n" + e.getMessage());
} finally {
if (conteudoCSV != null) {
try {
conteudoCSV.close();
} catch (IOException e) {
System.out.println("IO Erro: \n" + e.getMessage());
}
}
}
}
Dentro dos dados retornados, tenho dados[1] onde traz a data dentro do arquivo. Gostaria de validar o formato dela para “dd/MM/yyyy”, pois o usuário pode preencher a data com “28-05-2019”. Cheguei a criar um outro método, mas ainda assim não me retorna a data como inválida.
public boolean validaData(String dateToValidate) throws ParseException {
if ((dateToValidate == null) || (dateToValidate.equals(""))) {
throw new NullPointerException("A data passada é nula ou vazia");
}
String[] dados = null;
dateToValidate = extracted(dados)[1];
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false);
try {
Date data = sdf.parse(dateToValidate);
System.out.println(sdf.format(data));
} catch (ParseException e) {
System.out.println("Formato de data inválida: \n" + e.getMessage());
}
return true;
}
private static String[] extracted(String[] dados) {
return dados;
}
Se puderem me auxiliar, fico grato!
