não consigo obter a hora correta

3 respostas
F

Ola a todos!Sou novato aqui no forum logo não sei se já foi solicitado algum pedido de ajuda do tipo.Minha dificuldade está em mostrar a hora correta do sistema sendo que sempre mostro o horário com uma hora a mais.Eis o código:

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.*;

import java.util.Date;

import java.text.SimpleDateFormat;
public class testando extends JFrame

{

private JLabel l1;

private JButton b1;

private Date data;

private JPanel p;

private SimpleDateFormat horario;
public testando()
   {
             super("Janela mostra hora atual");
 Container c = getContentPane();
 addWindowListener(new WindowAdapter()
 {
             public void windowClosing(WindowEvent e)
             {
	       System.exit(0);
              }
 });
	
l1 = new JLabel("Aperte o botão para saber a hora atual !");
b1 = new JButton("hora atual");
            data = new Date();
            p = new JPanel();
            c.add(p);
            p.add(l1);
            p.add(b1);
            horario = new  SimpleDateFormat("dd/MM/yyyy - hh:mm:ss");

            setSize(300,150);
            setVisible(true);
            show();
            
            b1.addActionListener(new ActionListener()
{
         public void actionPerformed(ActionEvent x)
        {   
                           
	l1.setText(""+horario.format(new Date()));
         }
});
      }
    
    public static void main(String[] args)
    {
            testando t = new testando();
    }

}

Se for possível me contem onde está o erro no código e mostrem como seria o código correto.

3 Respostas

marcos.junqueira

cara, se tah mostrando com uma hora a mais, deve ser alguma configuração com o locale do seu computador, tente mudar pra ver o que ocorre.

ou então tente usar o Calendar.getInstance()

T

O Java já entrou em horário de verão, mas o Windows (ou Linux) ainda não.

paulodeleo

Hoje passei boa parte do dia brigando com o horário de verão ativo somente na jvm, que, pelo menos para a versão 1.4, iniciou o horário de verão às 00:00 de 08/10/2006 para quem está usando a TimeZone “Brazil/East”. Foi um inferno até chegar na jvm, pois o problema foi identificado quando as datas dos registros no banco de dados estavam adiantadas, mas todos os servidores envolvidos estavam com o horário correto… :evil:

Para que seu código rode com a data do computador, fica assim (mudanças nas linhas 8, 29 e 44):

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class testando extends JFrame {
	private JLabel l1;

	private JButton b1;

	private Date data;

	private JPanel p;

	private SimpleDateFormat horario;

	public testando() {
		super("Janela mostra hora atual");
		Container c = getContentPane();
		TimeZone.setDefault( TimeZone.getTimeZone("GMT-03:00"));
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

		l1 = new JLabel("Aperte o botão para saber a hora atual !");
		b1 = new JButton("hora atual");
		
		data = new Date();
		p = new JPanel();
		c.add(p);
		p.add(l1);
		p.add(b1);
		horario = new SimpleDateFormat("dd/MM/yyyy - HH:mm:ss");

		setSize(300, 150);
		setVisible(true);
		show();

		b1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent x) {

				l1.setText("" + horario.format(new Date()));
			}
		});
	}

	public static void main(String[] args) {
		testando t = new testando();
	}
}
Criado 9 de outubro de 2006
Ultima resposta 9 de out. de 2006
Respostas 3
Participantes 4