miércoles, 23 de marzo de 2016

Pasear fechas que no sabemos el formato

Muchas veces ocurre que necesitamos en base a un string pasear fechas.
Lo normal es escribir una regex para esa fecha en particular, pero cuando queremos darnos cuenta(si consumimos distintos servicios) nos encontramos que tenemos distintas regex distribuidas por todo el código.

La mejor forma que encontré de lidiar con esto, es tener las regex más comunes que usamos en la empresa, y un fallback genérico con el formato mínimo que suelen compartir, y realmente nos ha dado buenos resultados.
Dejo el snippet en groovy, la idea es pasarle el string, y que te devuelta la fecha parseada, haciendo el best-effort por parsearla lo más precisamente posible. Debemos hacer el chequeo de NULL ya que este método puede no devolvernos la fecha en caso que no pueda parsear el string. Además depende de el manejo de logs que tengamos, puede que si no tengamos cuidado contaminemos los logs importantes con esto(en los casos que falla)



    def parseDateTime(String date){
        def returnDate
        for(it in ["yyyy-MM-dd'T'HH:mm:sss'Z'", "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "yyyy-MM-dd"]){
            try{
                returnDate =  new Date().parse(it, date)
                break
            }catch (Exception e){
                log.info "${date} no pudo ser parseado con el dateFormat ${it}"
            }
        }
        return returnDate
    }

No hay comentarios:

Publicar un comentario