martes, 24 de mayo de 2016

[JAVA] Conversiones entre Cadena y Date



Para convertir una fecha desde una cadena no siempre es una tarea tan sencilla ya que no hay un método directo que pueda consumir la cadena y me lo interprete en Java, mas si por ejemplo tenemos el formato que usamos aquí en México (dd-MM-yyyy), y muchas veces buscamos en las clases Calendar o Date en busca de una solución. En este caso usaremos una clase SimpleDateFormat para poder parsear (interpretarla correctamente para que se adapte a la clase) en un objeto de tipo Date.  

Supongamos que tenemos una fecha en formato de dias-mes-año, vamos a sumarle 30 días naturales, lo primero que tendríamos que hacer es import la librería necesaria

   //estas dos son las que se necesitan para la conversion string-date
   import java.text.ParseException;
   import java.text.SimpleDateFormat;
   //Estas son para complementar el ejercicio
   import java.util.Calendar;
   import java.util.Date;

Después declaramos el objeto SimpleDateFormat que es practicamente quien nos dara la traducción. 

    // la cadena que pasamos como parametro sera el formato en el que vamos recibir los datos
    // en esta clase la "m" minuscula corresponde a los minutos y la "M" mayuscula al nombre
    SimpleDateFormat parser = new SimpleDateFormat("dd-MM-yyyy"); 

Cuando vayamos a parsear nos pide que hay una Excepción por lo que nos pedirá que manejemos el problema y lo hacemos mediante un Try y Catch. 

   try {
       Date fecha = parser.parse(cadenaConFecha); // <- Aqui pedira un manejo de excepciones
   } catch (ParseException ex) {
            System.out.println(ex.toString());
   }
Por ultimo utilizaremos la clase Calendar para aumentarle los 30 dias y usaremos el mismo SimpleDateFormat para imprimir con el mismo formato 

            Calendar cal = Calendar.getInstance();
            cal.setTime(fecha);
            cal.add(Calendar.DAY_OF_YEAR, 30);

Aquí les dejo el ejemplo completo

package pruebajava;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @author coby
 */
public class PruebaJava {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String fechaCadena = "12-12-2010";
       SimpleDateFormat parser = new SimpleDateFormat("dd-MM-yyyy"); 
        try {
            Date fecha = parser.parse(fechaCadena);
            Calendar cal = Calendar.getInstance();
            cal.setTime(fecha);
            cal.add(Calendar.DAY_OF_YEAR, 30);
            System.out.println("La fecha es " + parser.format(cal.getTime()));
        } catch (ParseException ex) {
            System.out.println(ex.toString());
        }
        
    }
    
}


Espero les haya servido


No hay comentarios:

Publicar un comentario