Converter entre String e Timestamp

Converter entre String e Timestamp

1. Visão geral

Timestamp é um dos poucos objetos de data e hora legados em Java.

Neste tutorial, veremos como analisar de um valorString para um objetoTimestamp e como formatar um objetoTimestamp para umString.

E comoTimestamp depende de um formato proprietário do Java, veremos como fazer uma adaptação eficaz.

2. Analisa umString para umTimestamp

2.1. Formato padrão

A maneira mais simples de analisar umString to aTimestamp é seu métodovalueOf :

Timestamp.valueOf("2018-11-12 01:02:03.123456789")

E quando nossoString está no formato de carimbo de data / hora JDBC -yyyy-m[m]-d[d] hh:mm: _ss [.f…] _ - então é muito simples.

Podemos interpretar esse padrão assim:

padronizar Descrição Exemplo

yyyy

Representa o ano e é obrigatório ter quatro dígitos para isso.

2018

m[m]

Para o componente do mês, devemos ter um ou dois dígitos (de 1 a 12).

1, 11

d[d]

Para o valor do dia do mês, devemos ter um ou dois dígitos (de 1 a 31).

7, 12

hh

Representa a hora do dia, com valores permitidos de 0 a 23.

01, 16

mm

Significa minutos da hora, com valores permitidos de 0 a 59.

02, 45

ss

Representa os segundos no minuto, com valores permitidos de 0 a 59.

03, 52

[.f…]

Representa frações opcionais de um segundo, pode ter precisão de até nanossegundos, então os valores permitidos vão de 0 a 999999999.

12, 1567, 123456789

2.2. Formatos alternativos

Agora, se não estiver no formato de carimbo de data / hora JDBC, então, felizmente,valueOf also assume uma posiçãoLocalDateTime .

This means we can take a date in any format,, só precisamos primeiroconvert it into a LocalDateTime:

String pattern = "MMM dd, yyyy HH:mm:ss.SSSSSSSS";
String timestampAsString = "Nov 12, 2018 13:02:56.12345678";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
LocalDateTime localDateTime = LocalDateTime.from(formatter.parse(timestampAsString));

E então podemos usarvalueOf que usamos antes:

Timestamp timestamp = Timestamp.valueOf(localDateTime);
assertEquals("2018-11-12 13:02:56.12345678", timestamp.toString());

Observe de passagem que,unlike a Date object, a Timestamp object is capable of storing fractions of a second.

3. Formate aTimestamp comoString

Para formatar umTimestamp, teremos o mesmo desafio, pois o formato padrão é o formato de carimbo de data / hora JDBC proprietário:

assertEquals("2018-11-12 13:02:56.12345678", timestamp.toString());

Mas, novamente, usando uma conversão intermediária, podemos formatar oString resultante para um padrão de data e hora diferente, como o padrão ISO-8601:

Timestamp timestamp = Timestamp.valueOf("2018-12-12 01:02:03.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;

String timestampAsString = formatter.format(timestamp.toLocalDateTime());
assertEquals("2018-12-12T01:02:03.123456789", timestampAsString);

4. Conclusão

Neste artigo, vimos como converter entre objetosStringeTimestamp em Java. Além disso, vimos como usar a conversão deLocalDateTime como uma etapa intermediária para converter de e para diferentes padrões de data e hora.

E certifique-se de encontrar todos esses exemplos e trechosover on GitHub.