Java - Pasar dias desde 01/01/2000 a fecha dd/mm/aaaa

   
Vista:

Pasar dias desde 01/01/2000 a fecha dd/mm/aaaa

Publicado por Dark_lock (1 intervención) el 17/10/2009 23:36:51
Buenas, llevo un par de dias tirandome de los pelos para realizar esta función.
Se que existen funciones que ya hacen esto pero es una especie de trabajo (estudio programación) y me atasqué en esta función.

Realicé una función que recibe un String con una fecha formato dd/mm/yyyy y me devuelve un integer que es el numero de dias que han pasado desde la fecha 01/01/2000. Esta función es bastante sencilla, no tiene ni 5 lineas.
El problema viene cuando tengo que realizar otra función que haga lo contrario, que reciba un integer que son los numero de dias y devolver un String con la fecha en formato dd/mm/yyyy.
El codigo tiene errores y no se solventarlos.

Entonces pido porfavor si alguien tiene un codigo parecido, me lo mande por correo. Gracias.
Aun así dejo mi codigo abajo, comentado para que no os liéis. Gracias de antemano.

public String numeroToFecha(int numero){
numero++;
String fecha = "";
int aux = 0; //Esta variable nos servirá para guardar la ultima operación con los meses, para cuando dé negativo volverselo a sumar.
int dia;
int mes;
int año;
if(numero < 0){
//Aún no me puse si fuera negativo (si no me sale ni en positivo :( )
}else{
año = numero / 365; //primero calculamos cuantos años hay en el numero que nos pasan (obviamos por ahora los años bisiestos)
numero -= año * 365; //restamos a numero el numero de años (en dias) para quedarnos con los dias que quedan
System.out.println(" - Sobran: " + numero);
for(short i=2000;i<(2000 + año);i++){ //(FOR)Ahora tenemos en cuenta los años bisiestos y restamos 1 dia por cada año bisiesto (ya que se utilizaron en los años bisiestos
if(esBisiesto(i) && numero != 0) numero--;
if(numero == 0){
año--;
numero = esBisiesto((short)(2000 + año)) ? 366 : 365;
}
}
mes = 1; //Iniciamos el mes a enero
while(numero>0){ //vamos mes a mes y restamos los dias de cada mes
switch(mes){
case 4:
case 6:
case 9:
case 11: numero -= 30;
aux = 30;
break;
case 2: if(esBisiesto((short)año)){
numero -= 29;
aux = 29;
}else{
numero -= 28;
aux = 28;
}
break;
default: numero -= 31;
aux = 31;
}
mes++;
} //cuando ya es negativo la variable numero...
numero += aux; //volvemos a sumar la ultima operación que lo puso negativo...
mes--; //y le restamos el mes que puso de más.
dia = numero;
fecha += dia < 10 ? "0" + dia : dia;
fecha += "/";
fecha += mes < 10 ? "0" + mes : mes;
fecha += "/";
año += 2000;
if(año < 10){
fecha += "000" + año;
}else if(año < 100){
fecha += "00" + año;
}else if(año < 1000){
fecha += "0" + año;
}else{
fecha += año;
}
}
return fecha;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasar dias desde 01/01/2000 a fecha dd/mm/aaaa

Publicado por chasal99 (42 intervenciones) el 19/10/2009 19:37:42
hola Dark_lock te dejo un codigo a ver si te sirve cualquier cosa escribelo aqui o escribeme a chasal99@hotmail.com

public String diasTranscurridos(int dias){
String fechaFinal="";
Calendar fecha = Calendar.getInstance();
//Se instacia la fecha
fecha.set(2000, 00, 01);

// se suma los dias o restan
fecha.add(Calendar.DAY_OF_YEAR, dias);
// verifico fecha
Timestamp time=new Timestamp( fecha.getTimeInMillis());
SimpleDateFormat Formato = new SimpleDateFormat("dd/MM/yyyy");
String fechaString= Formato.format(time);
System.out.println(fechaString);
return fechaFinal;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar