Ola,
Eu estou tentando fazer um projeto simples, escrever uma data por extenso e descobrir o intervalo entre horas.
Mas o Calendar parece nao estar respondendo
public class Main {
public static void main(String[] args) {
Date dataInicial = new Date ();
Date dataFinal = new Date ();
Calendar cal = Calendar.getInstance();
cal.setTime(dataInicial);
cal.set(Calendar.DAY_OF_MONTH, 26);
cal.set(Calendar.MONTH, 12);
cal.set(Calendar.YEAR, 2008);
System.out.println(cal.get(Calendar.DAY_OF_MONTH) + " " + cal.get(Calendar.MONTH) + " " + cal.get(Calendar.YEAR));
System.out.println(dateToString(dataInicial));
cal.setTime(dataInicial);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.setTime(dataFinal);
cal.set(Calendar.HOUR_OF_DAY, 2);
cal.set(Calendar.MINUTE, 2);
cal.set(Calendar.SECOND, (int) 30.7);
System.out.println(intervaloDeTempo(dataInicial, dataFinal));
}
private static String dateToString(Date data){
String rs = "";
Calendar cal = Calendar.getInstance();
cal.setTime(data);
int day = cal.get(Calendar.DAY_OF_MONTH);
if (day<10){
rs+="0" + String.valueOf(day);
} else{
rs+= String.valueOf(day);
}
rs+= " de " + mes(cal.get(Calendar.MONTH));
rs+= " de " + String.valueOf(cal.get(Calendar.YEAR));
return rs;
}
private static String mes(int i){
switch (i) {
case 1:
return "janeiro";
case 2:
return "fevereiro";
case 3:
return "marco";
case 4:
return "abril";
case 5:
return "maio";
case 6:
return "junho";
case 7:
return "julho";
case 8:
return "agosto";
case 9:
return "setembro";
case 10:
return "outubro";
case 11:
return "novembro";
case 0:
return "dezembro";
}
return null;
}
private static String intervaloDeTempo(Date dataInicial, Date dataFinal){
Calendar cal = Calendar.getInstance();
cal.setTime(dataInicial);
double timeIni = horaToSegundo(cal.get(Calendar.HOUR_OF_DAY),
cal.get(Calendar.MINUTE), (double)cal.get(Calendar.SECOND));
cal.setTime(dataFinal);
double timeFi = horaToSegundo(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), (double)cal.get(Calendar.SECOND));
return segundoToHora(timeFi-timeIni);
}
private static double horaToSegundo(int hora, int minuto, double segundo){
double rs = 0;
rs+= hora*3600;
rs+= minuto*60;
rs+= segundo;
return rs;
}
private static String segundoToHora(double x){
String rs = "";
int hora = (int) (x-x%3600)/3600;
x%=3600;
int minuto = (int) ((x-x%60)/60);
x%=60;
Double segundo = x;
rs+= String.valueOf(hora) + "hs ";
rs+= String.valueOf(minuto) + "min ";
rs+= String.valueOf(segundo) + "s";
return rs;
}
}
Desde ja agradeco e vou procurando a resposta se eu nao achar aqui.

