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


0