Java - Date_compare

 
Vista:

Date_compare

Publicado por David (13 intervenciones) el 30/07/2008 11:35:45
Bueno esta duda m está volviendo loco,,,ya que soy un novatillo puro y duro... ahi va el cachaco de codigo:

import java.util.Date;
import cs1.Keyboard;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Date_compare2 {


public static String calcul_data(int anioA,int anioB,int mesA,int mesB,int diaA,int diaB,
int horaA,int horaB,int minA,int minB,int segA,int segB ) {


int horaT,minT,segT;
int anioT,diaT;
String cadena;//,anioS,diaS,horaS,minS,segS;


GregorianCalendar gr = new GregorianCalendar();
GregorianCalendar gr2 = new GregorianCalendar();


Date f1 = new Date(anioA,mesA,diaA,horaA,minA,segA);//definim una variable del tipus date i li assignem per teclat els valors

//anioA=f1.getYear(); //agafem l'any i li assignem a la variable anioA
gr.setTime(f1);//la variable del tipus Date f1, la fem dl tipus gregorianCalendar

/*diaA = gr.get(Calendar.DAY_OF_YEAR);//agafem el dia
horaA=gr.get(Calendar.HOUR_OF_DAY);//la hora
minA=gr.get(Calendar.MINUTE);//els minuts
segA= gr.get(Calendar.SECOND);//i els segons*/

Date f2 = new Date(anioB,mesB,diaB,horaB,minB,segB);
anioB=f2.getYear();
gr2.setTime(f2);

/*diaB = gr2.get(Calendar.DAY_OF_YEAR);
horaB=gr2.get(Calendar.HOUR_OF_DAY);
minB=gr2.get(Calendar.MINUTE);
segB= gr2.get(Calendar.SECOND);*/

horaT=horaB-horaA;
String horaS=Integer.toString(horaT);
minT=minB-minA;
String minS=Integer.toString(minT);
segT=segB-segA;
String segS=Integer.toString(segT);
//amb la funcio calendar no té en conte els diferents anys, per tant haurem de fer la següent condició
anioT=anioB-anioA;
diaT=diaB-diaA;
String diaS=Integer.toString(diaT);

if (anioT==0) {
cadena= diaS+" dia(s) "+horaS+" hora(s) "+minS+" minuto(s) "+segS+" segundo(s)";

}
else{
anioT=365*anioT;
String anioS=Integer.toString(anioT);
cadena=anioS+" dia(s) "+horaS+" hora(s) "+minS+" minuto(s) "+segS+" segundo(s)";
}

return cadena;

}

public static void main(String[] args) {

int horaA,minA,segA;
int horaB,minB,segB;
int anioA,anioB;
int mesA,mesB,diaA,diaB;
int anioT,horaT,minT,segT;
String cadena="";

System.out.println("anyA: ");
anioA = Keyboard.readInt();

System.out.println("anyB: ");
anioB = Keyboard.readInt();

System.out.println("mesA: ");
mesA = Keyboard.readInt();

System.out.println("mesB: ");
mesB = Keyboard.readInt();

System.out.println("diaA: ");
diaA = Keyboard.readInt();

System.out.println("diaB: ");
diaB = Keyboard.readInt();

System.out.println("horaA: ");
horaA = Keyboard.readInt();

System.out.println("horaB: ");
horaB = Keyboard.readInt();

System.out.println("minutA: ");
minA = Keyboard.readInt();

System.out.println("minutB: ");
minB = Keyboard.readInt();

System.out.println("segonsA: ");
segA = Keyboard.readInt();

System.out.println("segonsB: ");
segB = Keyboard.readInt();

System.out.println(calcul_data(cadena));


}


}

------------------------------

bueno espero no os lieis demasiado con tanto comentario ..

bueno el programa es una accion y una funcion, la accion coge todas los datos de dos fechas,paso por paso, es decir, año, mes,dia,hora minuto y segundos.... esto se lo paso a la funcion. La funcion hace una diferencia de los dias ,horas,minutos y segundos que hay entre las dos fechas.... la question está es que a mi me gustaria pasarle simplemente una variable del tipo DATE, i asi ahorrarme tanto codigo inutil.... como vereis ya lo he preparado todo para coger los datos de un Date(pero está comentado).


Tal y como está ahora, me da el siguiente error:

Date_compare2.java:111: calcul_data(int,int,int,int,int,int,int,int,int,int,int,int) in Date_compare2 cannot be applied to (java.lang.String)
System.out.println(calcul_data(cadena));

**También me valdria una solucion para esto,si lo otro lo veis muy,,lioso xD
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:Date_compare

Publicado por David (13 intervenciones) el 30/07/2008 11:38:47
horaT=horaB-horaA;
String horaS=Integer.toString(horaT);
minT=minB-minA;
String minS=Integer.toString(minT);
segT=segB-segA;
String segS=Integer.toString(segT);
//amb la funcio calendar no té en conte els diferents anys, per tant haurem de fer la següent condició
anioT=anioB-anioA;
diaT=diaB-diaA;
String diaS=Integer.toString(diaT);

--------------

Esta parte de codigo es asi, porque al darme el error este ultimo mencionado, he probado de crear una variable String, que contenga el integer pasado a String. Por si daba error el concatenar lo concatenado...
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

RE:Date_compare

Publicado por David (13 intervenciones) el 31/07/2008 13:18:33
por si a alguien le interesa...asi lo arreglé SOY UN CRACK jejejej

----------------------------------

import java.util.Date;
import cs1.Keyboard;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Date_compare2 {


public static String calcul_data(Date fecha1,Date fecha2) {


int horaT,minT,segT;
int anioT,diaT;
int horaA,minA,segA;
int horaB,minB,segB;
int anioA,anioB;
int diaA,diaB;
int mesA,mesB;

String cadena;

GregorianCalendar gr = new GregorianCalendar();
GregorianCalendar gr2 = new GregorianCalendar();

anioA=fecha1.getYear(); //agafem l'any i li assignem a la variable anioA
gr.setTime(fecha1);//la variable del tipus Date f1, la fem dl tipus gregorianCalendar

diaA = gr.get(Calendar.DAY_OF_YEAR);//agafem el dia
horaA=gr.get(Calendar.HOUR_OF_DAY);//la hora
minA=gr.get(Calendar.MINUTE);//els minuts
segA= gr.get(Calendar.SECOND);//i els segons

anioB=fecha2.getYear();
gr2.setTime(fecha2);

diaB = gr2.get(Calendar.DAY_OF_YEAR);
horaB=gr2.get(Calendar.HOUR_OF_DAY);
minB=gr2.get(Calendar.MINUTE);
segB= gr2.get(Calendar.SECOND);

horaT=horaB-horaA;
minT=minB-minA;
segT=segB-segA;
anioT=anioB-anioA;
diaT=diaB-diaA;

//La funcio calendar sempre treballa amb datas del mateix any,
//per tant, haurem de fer la següent condició

if (anioT==0) {

System.out.println("La diferencia entre "+fecha1+" y "+fecha2+" es de:"+" ");

cadena= horaT+ " hora(s)"+" "
+minT+" minuto(s)" +" "
+segT+" segundo(s)";

}
else{
anioT=365*anioT;//N anys * 365 dies-->obtenim els dies totals

System.out.println("La diferencia entre "+fecha1+" y "+fecha2+" es de:"+" ");

cadena= anioT+" dia(s)"+" "
+horaT+ " hora(s)"+" "
+minT+" minuto(s)" +" "
+segT+" segundo(s)";
}

return cadena;

}


public static void main(String[] args) {

Date fecha1=new Date(2000,01,01,12,34,23);
Date fecha2=new Date(2000,01,01,16,49,56);


System.out.println(calcul_data(fecha1,fecha2));

}

}
-----------------------
como veis entro una DATE fija, pero era una mera comprobación de que el programa va correctamente.

saludos!
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