Prezados, preciso efetuar calculosem algumas datas que possuo, como por exemplo: 18/10/2006 11:00 e 19/10/2006 17:00
Para que me retorne a quantidade de horas e minutos entre essas duas datas, no caso, 30:00.
Obrigado.
Calculo entre Datas
7 Respostas
um modo seria vc fazer uma logica de diminuir a maior com a menor
para fazer isto vc iria ter que dividir ela em dia, mes, ano, hora, minutos
certo?
Ola… uma idéia geral seria algo assim:
public class Dates {
public static void main(String args[]){
GregorianCalendar dtInicio = new GregorianCalendar(2006,10,06,11,00);
GregorianCalendar dtFim = new GregorianCalendar(2006,10,06,11,40);
GregorianCalendar diff = new GregorianCalendar();
diff.setTimeInMillis(dtFim.getTimeInMillis() - dtInicio.getTimeInMillis());
System.out.println("Diferença: " + diff.get(Calendar.MINUTE) + ":" + diff.get(Calendar.SECOND));
}
}
De um olhada na documentação da classe GregorianCalendar. Falta também aplicar uma máscara para o resutado de saída. Até mais.
bem eu tenho outra duvida…
eu gostaria tbm de diminuir a hora, fim-inicio = duracao, mas eu coloco a hora em um label
ActionListener listener = new ActionListener(){
SimpleDateFormat formatador = new SimpleDateFormat("HH:mm:ss");
public void actionPerformed(ActionEvent evt){
jLabel.setText(formatador.format(new Date()));
}
};
Timer timer = new Timer(1000, listener);
timer.start();
e eu gostaria de pegar a hora(inicio) qdo entra no programa e dpois (fim) qdo aperta um botao por ex.
o que tenho que fazer??
flw
Ola… não sei se entendi muito bem, mas seria algo assim?
public class Dates extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JLabel jLabel = null;
private JButton jButton = null;
public Dates() {
super();
initialize();
}
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("Testes");
//Imprimir Inicio do programa
GregorianCalendar dtInicio = new GregorianCalendar();
System.out.println(dtInicio.getTime().toString());
ActionListener listener = new ActionListener(){
public void actionPerformed(ActionEvent evt){
SimpleDateFormat formatador = new SimpleDateFormat("HH:mm:ss");
jLabel.setText(formatador.format(new Date()));
}
};
Timer timer = new Timer(1000, listener);
timer.start();
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(73, 48, 131, 23));
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(jLabel, null);
jContentPane.add(getJButton(), null);
}
return jContentPane;
}
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(87, 96, 100, 22));
jButton.setText("Pegar Hora");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
GregorianCalendar dtFim = new GregorianCalendar();
System.out.println(dtFim.getTime().toString());
}
});
}
return jButton;
}
}
Bem, se for isso so teria que escolher o melhor momento para pegar a data de início do programa. Eu fiz no initialize() para exemplo… Espero ter ajudado.
vlw cara nunca tinha pensado no gregorian
muito obrigado
GregorianCalendar dtInicio = new GregorianCalendar();
jlbInicioHora.setText((dtInicio.getTime().toString()));
não consegui imprimir assim: 09/11/06 10:12:37
como que eu faço??
Use O SimpleDateFormat assim… Até mais!!!
SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
jLabel.setText(formatador.format(new GregorianCalendar().getTime()));