Estou desenvolvendo um banco de horas de motoristas que viajam
de rio preto a sao paulo e vice versa…
E vou pegar os dados de um JTextField que esta em JInternalFrame
quando o usuario der um enter no jtextfield, ai pega os dados
e subtrai a hora e o dia , pq o motorista sai hoje as 20:00 horas e chega a manhã as 05:00 ; ai calcula o total de horas certinho…
So que não consigo fazer isso no meu programa… vou postar o codigo pra alguem me ajudar.
O programa sozinho pra calcular a hora eu consigo fazer
so que jogando dentro do meu programa eu nao consigo,
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TestDate {
/**
- Retorna a diferença entre duas datas em milisegundos.
- A ordem das datas não importa.
- @param d1 Data inicial.
- @param d2 Data final.
-
@return Tempo, em milisegundos, que passou entre uma data e outra.
/
public static long diffDate(Date d1, Date d2) {
if (d1.before(d2)) {
return d2.getTime() - d1.getTime();
}
else {
return d1.getTime() - d2.getTime();
}
}
/* - Transforma o valor passado em milisegundos para a representação no formato
- @param milis Tempo em milisegundos.
-
@return Tempo convertido.
/
public static String milisToString(long milis) {
int h, m, s;
Date data;
/ Observe que só uma parte da hora será formatada - com este SimpleDateFormtat aqui embaixo.
/
SimpleDateFormat sdf = new SimpleDateFormat(":mm:ss");
Calendar calendar = new GregorianCalendar();
/ Pega as horas, os minutos e os segundos /
h = (int) (milis / 3600000);
m = (int) ((milis / 3600000) / 60000);
s = (int) ((milis % 3600000) / 1000);
/ Seta os campos do objeto Calendar /
calendar.set(Calendar.HOUR_OF_DAY, h);
calendar.set(Calendar.MINUTE, m);
calendar.set(Calendar.SECOND, s);
/ Cria uma nova instância de java.util.Date /
data = new Date(calendar.getTimeInMillis());
/ Coloca a hora e junta com o resto. Isto é necessário - para caso a diferença seja maior que um dia.
/
return “” + h + sdf.format(data);
}
public static void main(String[] args) throws Exception {
/ Cria um java.text.SimpleDateFormat /
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy HH:mm:ss”);
/ Cria duas datas quaisquer /
Date date1 = sdf.parse(“02/08/2004 10:52:00”);
Date date2 = sdf.parse(“03/08/2004 15:30:00”);
/ Calcula a diferença de tempo entre as datas /
long tempoPassado = diffDate(date1, date2);
/ Imprime as duas datas /
System.out.println(sdf.format(date1) + " -> " + date1.getTime());
System.out.println(sdf.format(date2) + " -> " + date2.getTime());
/ Imprime a diferença de tempo */
System.out.println("A diferença é " + milisToString(tempoPassado));
}
}
e jogar isso no meu programa
so que ai eu nao vou dar a data e nem a hora
ela vai puxar dos jtextfields
jLabel1.setVisible(false);
jLabel4.setVisible(false);
jLabel2.setVisible(false);
frame = new JInternalFrame(
“Manutenção de Viagens”, true, true, true, true);
Container container = frame.getContentPane();
JPanel norte = new JPanel();
frame.pack();
frame.setSize(380,340);
desktopPane.add(frame);
frame.setVisible(true);
frame.setResizable(true);
tnficha.setBorder(BorderFactory.createLoweredBevelBorder());
tnviagem.setBorder(BorderFactory.createLoweredBevelBorder());
tt1.setBorder(BorderFactory.createLoweredBevelBorder());
tpveiculo.setBorder(BorderFactory.createLoweredBevelBorder());
t4.setBorder(BorderFactory.createLoweredBevelBorder());
t5.setBorder(BorderFactory.createLoweredBevelBorder());
norte.add(lnficha); norte.add(tnficha);
norte.add(lnviagem); norte.add(tnviagem);
norte.add(ll1); norte.add(tt1);
norte.add(lpveiculo); norte.add(tpveiculo);
norte.add(l4); norte.add(t4);
norte.add(l5); norte.add(t5);
norte.setBorder(BorderFactory.createLineBorder(Color.black));
norte.setLayout( new GridLayout(6,3,2,2));
container.add(norte, BorderLayout.NORTH);
JPanel centro = new JPanel();
centro.setBorder(BorderFactory.createLineBorder(Color.blue));
centro.setLayout(new GridLayout(5,4,2,2));
t2.setBorder(BorderFactory.createLoweredBevelBorder());
t7.setBorder(BorderFactory.createLoweredBevelBorder());
t3.setBorder(BorderFactory.createLoweredBevelBorder());
t8.setBorder(BorderFactory.createLoweredBevelBorder());
t1.setBorder(BorderFactory.createLoweredBevelBorder());
t6.setBorder(BorderFactory.createLoweredBevelBorder());
centro.add(l2); centro.add(t2);
centro.add(l7); centro.add(t7);
centro.add(l3); centro.add(t3);
centro.add(l8); centro.add(t8);
centro.add(l1); centro.add(t1);
centro.add(l6); centro.add(t6);
t10.setBorder(BorderFactory.createLineBorder(Color.white));
t9.setBorder(BorderFactory.createLineBorder(Color.white));
tcarga.setBorder(BorderFactory.createLineBorder(Color.red));
centro.add(l9); centro.add(l10); centro.add(lcarga);
centro.add(tcarga); centro.add(t9); centro.add(t10);
container.add(centro, BorderLayout.CENTER);
JPanel sul = new JPanel();
sul.add(bveiculo); sul.add(balterar);
sul.add(batualizar); sul.add(bexcluir);
sul.setBorder(BorderFactory.createLineBorder(Color.white));
sul.setLayout( new GridLayout(1,4,10,4));
container.add(sul, BorderLayout.SOUTH);
t6.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
[size=“24”] É aqui que preciso que calcule a hora aqui ele vai pegar o valor da primeira hora no t1.getText();
e a segunda hora t6.getText(); e vai dar o resultado total das hora no t10.setText();[/size]
}
}
);
}
}
);
[color=“red”][/color][size=“18”][/size]

