TimeStamp!

10 respostas
T

Galera,

Tem como criar um TimeStamp apartir de um String?

Ex: String strData = “2003-12-31 17:48:00”;

Dessa String criar um TimeStamp? Alguém já se deparou com isso ou tem outra solução?

[]´s

10 Respostas

T

Já resolvi.

Usei o construtor : TimeStamp(int,int,int,int,int,int,int)

[]´s

R

1.1) Como converter uma String em um Date:

java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date data = df.parse(strData, new java.text.ParsePosition(0));

Não entendi direito o ParsePosition, de forma que acho que você deve tomar cuidado com essa classe.
1.2) Como converter java.util.Date para java.sql.Timestamp.
Timestamp é derivada de Date. Poderia fazer simplesmente um cast, mas acho que isso não daria certo. Tente isso:

TimeStamp ts = new TimeStamp(data.getTime());
  1. Outra alternativa:
TimeStamp ts = TimeStamp.valueOf(strData);

strData deve estar no formato “yyyy-mm-dd hh:mm:ss.fffffffff”, onde “fffffffff” são os bilionésimos de segundo.

Espero que sirva:

R

Thiago:

Este Construtor do Timestamp() funciona, mas está depreciado. Preste atenção na documentação.

T

To ligado que ele é deprecated. Tem algum problema em usa-lo?
Vou tentar utilizar as saidas citadas por voce.

[]´s

T

Rafael,

Não existe um construtro TimeStamp que aceite um Date como parametro.
Tenho a api JavaTM 2 Platform Std. Ed. v1.4.1, e pelo menos nela nao.
Tem aquele que eu usei e um que aceita um long.

[]´s

R

Funcionalmente, não tem problema nenhum… ainda. Mas lembre-se que um método deprecated pode muito bem ser retirado nas próximas versões.
E também vai acontecer que sempre for compilar, vai aparecer um warning chato avisando sobre o construtor deprecated. A não ser se desativar os warnings ao rodar o javac.
Mas se quiser usar, tudo bem. Mas é por sua própria conta e risco.

:arrow: Agora li sua última observação. Não estou usando data diretamente. Estou usando data.getTime() que retorna um long, que é o que o construtor de TimeStamp aceita.

T

Opa desculpa a gafe. O construtor TimeStamp(long) deve funcionar.
Vou tirar o deprecated.
Realmente esses warnings enchem o saco! rs
Se eu encontrar problemas volto a postar.

[]´s

T
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh24:mm:ss"); 
Date data = df.parse("2003-12-31 17:48:00", new ParsePosition(0));
Timestamp ts = new Timestamp(data.getTime());
System.out.println("-------> "+ts);

Parece que nao executa essa parte do codigo. Ve se vc encherga oq esta faltando.

[]´s

R

Thiago:

O erro está aqui:
DateFormat df = new SimpleDateFormat(“yyyy-MM-dd hh24:mm:ss”);
Não sei de onde você inventou este “hh24”. Você queria registrar as horas de 0 até 23 suponho? Segundo a API do SimpleDateFormat você deveria agir assim:

*Hour in day (0-23):

DateFormat df = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);

*Hour in day (1-24):

DateFormat df = new SimpleDateFormat(yyyy-MM-dd kk:mm:ss);

*Hour in am/pm (0-11):

DateFormat df = new SimpleDateFormat(yyyy-MM-dd KK:mm:ss);

*Hour in am/pm (1-12):

DateFormat df = new SimpleDateFormat(yyyy-MM-dd hh:mm:ss);

Foi isso que te passei originalmente.

De fato, estou descobrindo estas sutilezas da formatação de horas agora, enquanto escrevo este texto.
Espero que sirva. E leia a documentação da próxima vez, tá legal?

T

Que dura hein?
Mas ta valendo, fui meio preguiçoso mesmo.

[]´s

Criado 11 de março de 2003
Ultima resposta 12 de mar. de 2003
Respostas 10
Participantes 2