Calculo entre Datas

7 respostas
G

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.

7 Respostas

K

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?

B

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.

T

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

B

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.

K

vlw cara nunca tinha pensado no gregorian

muito obrigado

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

B

Use O SimpleDateFormat assim… Até mais!!!

SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
jLabel.setText(formatador.format(new GregorianCalendar().getTime()));
Criado 7 de novembro de 2006
Ultima resposta 10 de nov. de 2006
Respostas 7
Participantes 4