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.