miércoles, 5 de mayo de 2010

Obtener día, mes y año de una fecha en java con Date y Calendar

Hola:

Este en un ejemplo de una clase Java que puede servir para no usar lo siguiente:

       DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        Date date = null;


        try {
            date = formatter.parse(fecha);
        } catch (ParseException ex) {
            Logger.getLogger(ImpuestoEstadoDeMexico.class.getName()).log(Level.SEVERE, null, ex);
        }

       
        date.getDay();
        date.getMonth();
        date.getYear();

Estos métodos ya son obsoletos para las versiones mayores a la JDK 1.1 y por eso se recomienda el uso de Calendar.

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author mew
 */
public class Fecha {

    private String fecha;
    private int dia;
    private int mes;
    private int anio;

    public int getAnio() {
        return anio;
    }

    public void setAnio(int anio) {
        this.anio = anio;
    }

    public int getDia() {
        return dia;
    }

    public void setDia(int dia) {
        this.dia = dia;
    }

    public String getFecha() {
        return fecha;
    }

    public void setFecha(String fecha) {

        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        Date date = null;


        try {
            date = formatter.parse(fecha);
        } catch (ParseException ex) {
            Logger.getLogger(ImpuestoEstadoDeMexico.class.getName()).log(Level.SEVERE, null, ex);
        }



        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);


        int anio_ = calendar.get(Calendar.YEAR);
        int mes_ = calendar.get(Calendar.MONTH)+1;
        int dia_ = calendar.get(Calendar.DAY_OF_MONTH);

        this.setAnio(anio_);
        this.setDia(dia_);
        this.setMes(mes_);

        this.fecha = fecha;
    }

    public int getMes() {
        return mes;
    }

    public void setMes(int mes) {
        this.mes = mes;
    }


    public static void main(String[] args) {
        Fecha fecha = new Fecha();
        fecha.setFecha("28/03/2010");
        System.out.println(fecha.getAnio()+" "+fecha.getMes()+" "+fecha.getDia());
    }


}
La salia sera algo como lo siguiente:

2010 3 28

Esta es la aportación de para el blog:

// Objeto grafico
JCalendarCombo calendarCombo = new JCalendarCombo();
calendarCombo.setBounds(210, 102, 172, 20);
add(calendarCombo);

// Formateando la fecha para que le guste a mySQL
Calendar calendario = calendarCombo.getCalendar();
String fecha = calendario.get(calendario.YEAR) + "-"
+ (calendario.get(calendario.MONTH) + 1) + "-"
+ calendario.get(calendario.DAY_OF_MONTH);


3 comentarios:

Anónimo dijo...

Gracias por la info, te dejo mi código fuente :)

// Objeto grafico
JCalendarCombo calendarCombo = new JCalendarCombo();
calendarCombo.setBounds(210, 102, 172, 20);
add(calendarCombo);

// Formateando la fecha para que le guste a mySQL
Calendar calendario = calendarCombo.getCalendar();
String fecha = calendario.get(calendario.YEAR) + "-"
+ (calendario.get(calendario.MONTH) + 1) + "-"
+ calendario.get(calendario.DAY_OF_MONTH);

Anónimo dijo...

Una pregunta, Porque le sumas 1 al mes, se que te regresa un mes anterior, pero aque se debe este comportamiento??

luisdany dijo...

Gracias por el post y respondiendo a la pregunta, si leemos el JavaDoc tenemos: The first month of the year in the Gregorian and Julian calendars is JANUARY which is 0, así que para tener el número del mes que se quiere, se debe sumar 1.

Saludos.