Clase simple que valida la entrada de la cadena con un formato de fecha, si cumple con los formatos esperados, entonces crear el objeto LocalDate, de lo contrario retorna un nulo
Este es un ejemplo simple del uso de expresiones regulares para validar la forma de la cadena de entrada antes de ejecutar la conversión de la información, lo cual da un primer manejo simple de la información al momento de evaluar el dato a convertir, aunque regexp no evalúa la validez de la fecha (por ejemplo si es 32 de enero lo toma como verdadero) evalúa realmente que la forma de la cadena sea correcta.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.regex.Pattern;
/**
* Simple class to handle the date objects and
* parse from string to LocalDate
*/
public final class DateUtil {
/**
* Parse a String to DateLocal object in several formats
* @param inputDate String with in date shape
* @return LocalDate from the input string, null if is not valid
*/
public static LocalDate parseFromString (String inputDate) {
DateTimeFormatter standardFormat;
LocalDate parsedStringDate = null;
// Validate date format d/MMM/yyyy ex. 24/Apr/2021
if (Pattern.compile("^[0-9]{2}\\/(\\w)+\\/[0-9]{4}$").matcher(inputDate).matches()) {
standardFormat = DateTimeFormatter.ofPattern("d/MMM/yyyy", Locale.ENGLISH);
parsedStringDate = LocalDate.parse(inputDate, standardFormat);
}
// Validate date format d-MMM-yy ex. 24-Apr-21
if (Pattern.compile("^[0-9]{2}\\-(\\w)+\\-[0-9]{2}$").matcher(inputDate).matches()) {
standardFormat = DateTimeFormatter.ofPattern("d-MMM-yy", Locale.ENGLISH);
parsedStringDate = LocalDate.parse(inputDate, standardFormat);
}
// Return date object or Null
return parsedStringDate;
}
}
Acá dejo un ejemplo de uso de esta clase
public class Main {
public static void main(String[] args) {
String stringDate = "24-Apr-21";
System.out.println( DateUtil.parseFromString(stringDate).toString() );
}
}
HOLA! si te gustó o te fue útil, por favor, considera dejarme un comentario