Duvida com Timestamp

13 respostas
Zeed01

Boa tarde colegas !

Em uma tela tenho os campos Status e Data de alteração do status, deveria funcionar assim, se alterar o campo Status automaticamente deveria alterar o campo Data do status para a data atual.
Acontece que o campo data é um Timestamp, e não estou conseguindo pegar a data atual e colocar no formato correto…

Tentei isso, mas não funcionou… traz sempre 22/05/1971 00:00:00

clienteTemp.setStatus((Status)cmbStatus.getSelectedItem());
        if (!(cliente.getStatus().equals(clienteTemp.getStatus())))            
            clienteTemp.setDataStatus(new Timestamp(new Date().getTime()));
        else 
            clienteTemp.setDataStatus(cliente.getDataNascimento());

cliente é o objeto que esta sendo mostrado na tela e clienteTemp é o objeto que estou montando com os dados alterados pelo usuario, para mandar para a persistência.

Obrigado a todos.

Abraços.

13 Respostas

andredeividi

de qual banco estamos falando? vc pode fazer um triger para isso naum?

jjose

transforme o long em data

GregorianCalendar gCalendar = new GregorianCalendar();
		gCalendar.setTimeInMillis(timestamp.getTime());
		System.out.println(gCalendar.getTime());

O google pode ajudar

Pedrosa

De uma olhada em SimpleDateFormat:

new SimpleDateFormat("dd/MM/yyyy").format(campoTimestamp.getTime());
Zeed01

andredeividi:

O banco é MySql… sabe me dizer como criar uma trigger nele ?

Obrigado.

Um abraço.

jjose

google + mysql + trygger

Zeed01

jjose:

No seu código:

GregorianCalendar gCalendar = new GregorianCalendar();   
gCalendar.setTimeInMillis(timestamp.getTime());   
System.out.println(gCalendar.getTime());

timestamp é uma variavel ou é a classe Timestamp?

Se for a classe, o getTime retorna Date e o meu método espera receber Timestamp, sabe como resolver isso ?

A saida que eu vi foi: Tue Dec 04 17:06:15 GMT-03:00 2007
Com isso eu posso criar um new Timestamp ?

Obrigado.

Um abraço,

jjose

Zeed01:
jjose:

No seu código:

GregorianCalendar gCalendar = new GregorianCalendar();   
gCalendar.setTimeInMillis(timestamp.getTime());   
System.out.println(gCalendar.getTime());

timestamp é uma variavel ou é a classe Timestamp?

Se for a classe, o getTime retorna Date e o meu método espera receber Timestamp, sabe como resolver isso ?

A saida que eu vi foi: Tue Dec 04 17:06:15 GMT-03:00 2007
Com isso eu posso criar um new Timestamp ?

Obrigado.

Um abraço,

eh uma verial de referencia da classe Timestamp

GregorianCalendar gCalendar = new GregorianCalendar();   
		gCalendar.setTimeInMillis(timestamp.getTime());   
		Date data = gCalendar.getTime();
		System.out.println(data);
Zeed01

E como você criaria essa variavel ?
Quero dizer… os construtores de Timestamp são:

public Timestamp(int year, int month, int date, 
		     int hour, int minute, int second, int nano) {

public Timestamp(long time) {

Eu não teria que fazer algo assim:

Timestamp timestamp = new Timestamp(Date.getTime());

Nesse caso qual a funcção GregorianCalendar ?

Obrigado.

Um abraço.

fabim

por acaso 22/05/1971 é a data de nascimento do cliente?

pode ser que o problema seja no teste lógico… talvez seu programa esteja sempre entrando no ELSE…

jjose
Timestamp timestamp = new Timestamp(new Date().getTime());
		GregorianCalendar gCalendar = new GregorianCalendar(); 
		gCalendar.setTimeInMillis(timestamp.getTime());
		System.out.println(gCalendar.getTime());
		// Com date
		gCalendar.setTimeInMillis(new Date().getTime());   
		System.out.println(gCalendar.getTime());
jjose

Zeed01:
E como você criaria essa variavel ?
Quero dizer… os construtores de Timestamp são:

public Timestamp(int year, int month, int date, 
		     int hour, int minute, int second, int nano) {

public Timestamp(long time) {

Eu não teria que fazer algo assim:

Timestamp timestamp = new Timestamp(Date.getTime());

Nesse caso qual a funcção GregorianCalendar ?

Obrigado.

Um abraço.

Naum trabalhe com Timestamp entaum
todos os metodos que eu coloquei não estão depreciados
espero que ajude
pode ser mais facil se voce se limitar a metodos depreciados

Zeed01

Boa noite colegas !

Consegui fazer funcionar mais ou menos usando SimpleDateFormat.

O problema é que ele esta trazendo a hora no formato que só vai até 12 (desculpem mas não sei como chamar isso).

Então, 18:12 esta vindo como 06:12.

Alguem sabe como mudar isso ?

Segue o código que eu implementei:

if (!(cliente.getStatus().equals(clienteTemp.getStatus()))) {
            clienteTemp.setDataStatus(ConverterData.stringToDate(
                                new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").
                                    format(new Timestamp(new Date().
                                        getTime()).getTime()),
                                            "dd/MM/yyyy hh:mm:ss"));
        } else 
            clienteTemp.setDataStatus(cliente.getDataStatus());

Obrigado.

Um abraço.

Zeed01

Bom dia colegas !

Pessoal consegui resolver o problema do formato das horas, foi só trocar “dd/mm/yyyy hh:mm:ss” por “dd/mm/yyyy HH:mm:ss”, ou seja, o “h” minúsculo por maiúsculo.

Obrigado a todos pelas resposta !

Abraços.

Criado 4 de dezembro de 2007
Ultima resposta 5 de dez. de 2007
Respostas 13
Participantes 5