Foros del Web » Programación para mayores de 30 ;) » Java »

Calendar - ¿31 de Junio?

Estas en el tema de Calendar - ¿31 de Junio? en el foro de Java en Foros del Web. Buenas a todos. he hecho un programita tonto en un rato de aburrimiento para saber el día que cumpliré x días y me encontrado algo ...
  #1 (permalink)  
Antiguo 06/06/2008, 04:33
 
Fecha de Ingreso: enero-2007
Mensajes: 17
Antigüedad: 17 años, 4 meses
Puntos: 0
Calendar - ¿31 de Junio?

Buenas a todos. he hecho un programita tonto en un rato de aburrimiento para saber el día que cumpliré x días y me encontrado algo muy, pero que muy inesperado. Obtengo una fecha de ¡31 de Junio! Día que, como es obvio, no existe, pero la clase Calendar parece pensar que sí.

Aquí os dejo la parte relevante del código:

long numerodemilisegundosenundia = 24*60*60*1000;

Calendar c = Calendar.getInstance();
c.set(2008,6,6);
Date d1 = c.getTime();
c.set(1981,4,6);
Date d2 = c.getTime();
Date d3 = new Date(d2.getTime() + numerodemilisegundosenundia*9948);


long dif2 = (d3.getTime() - d1.getTime())/numerodemilisegundosenundia;
System.out.println("días que faltan hasta que cumplas 9948: " + dif2);

c.setTime(d3);
int ano = c.get(Calendar.YEAR);
int mes = c.get(Calendar.MONTH);
int dia = c.get(Calendar.DAY_OF_MONTH);
System.out.println("cumplirás 9948 el: " + dia + "/" + mes + "/" + ano);

Aparte de esto, Calendar está convencido de que hoy, día 6/6/2008, es domingo (cuando es jueves) ¿Alguien sabe de dónde provienen estos errores?
  #2 (permalink)  
Antiguo 06/06/2008, 04:44
 
Fecha de Ingreso: septiembre-2004
Mensajes: 191
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Calendar - ¿31 de Junio?

la clase calendar tiene un comportamiento "raro" en los meses.
Enero es el mes 0, y diciembre el mes 11. Vamos q los meses se cuentan desde 0-11.
El mes 6 es julio.

Por cierto, la clase calendar tiene utilidades para sumar/restar dias, meses , años, horas a una fecha sin necesidad de realizar cuentas. Por ejemplo

Código PHP:
/**
     * Añadir dias/meses/años,... a un date
     *
     * @param _date
     * @param _field
     * @param _amount
     * @return Date
     */

    
public static Date addDate(java.util.Date _dateint _fieldint _amount) {
        
Calendar fecha Calendar.getInstance();
        
fecha.setTime(_date);
        
fecha.add(_field_amount);
        return 
fecha.getTime();
    } 
el parametro date es la fecha de entrada.
l parametro field el campo a sumar (Calendar.DATE,Calendar.MONTH,Calendar.YEAR,.....)
el parametro amount, el numero que quieres sumar (para restar el numero pasarlo como negativo)
  #3 (permalink)  
Antiguo 11/06/2008, 15:33
 
Fecha de Ingreso: junio-2008
Mensajes: 21
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Calendar - ¿31 de Junio?

Mira tu calendra se esta comportando de forma estraña utiliza este codigo para ver si te funciona a mi me coge la hora y la fecha del sistemas si busca eso te sirvira

int año=d.get(Calendar.YEAR);
int mes=d.get(Calendar.MONTH)+1;
int dia=d.get(Calendar.DAY_OF_MONTH);
int h=d.get(Calendar.HOUR_OF_DAY);
int m=d.get(Calendar.MINUTE);
int seg=d.get(Calendar.SECOND);
String s= ""+dia+"/"+mes+"/"+año;
txtfechai.setText(s);
txthora.setText(""+h+":"+m+":"+seg);

de esta forma te va coger la fecha del sistema te recuerdo que tienes q importar la clase calendar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:05.