Converter String para Timestamp em Java

  1. Utilize TimeStamp.valueOf() para converter uma String para Timestamp em Java
  2. Utilize Date.getTime() para converter uma String para um carimbo de tempo em Java

Neste artigo, iremos introduzir dois métodos para converter uma string para um carimbo temporal em Java. Um carimbo da hora é utilizado principalmente em bases de dados para representar a hora exacta de algum evento. A classe Timestamp que utilizaremos neste tutorial faz parte do pacote java.sql.Timestamp.

Utilize TimeStamp.valueOf() para converter uma String para Timestamp em Java

Vamos utilizar a função estática da própria classe TimeStamp - valueOf(). É necessário um string como argumento e depois converte-o para um timestamp. Uma coisa importante a notar aqui é cuidar do formato em que a data e a hora são escritas na string que queremos que seja convertida num carimbo da hora. É limitado a um formato fixo, que é yyyy-mm-dd hh:mm:ss.

Não podemos alterar o formato e depois esperar o resultado certo, mas em vez disso, se utilizarmos um formato incorrecto, obteremos um IllegalArgumentException na saída. No exemplo abaixo, utilizámos 202020-12-12 01:24:23 como data e hora na string, o que segue o formato correcto de yyyy-mm-dd hh:mm:ss.

Podemos agora passar a dateTime como o único argumento do método valueOf(string), e este converterá uma string para um carimbo da hora.

import java.sql.Timestamp;

public class StringToTimeStamp {
    public static void main(String[] args) {

        String dateTime = "2020-12-12 01:24:23";

        Timestamp timestamp = Timestamp.valueOf(dateTime);
        System.out.println(timestamp);
    }
}

Resultado:

2020-12-12 01:24:23.0

Podemos eliminar as restrições de formatação de data e hora utilizando o mesmo método valueOf(), mas em vez de passar directamente uma string para o método, utilizaremos a classe LocalDateTime. Porque o valueOf() aceita um LocalDateTime como argumento.

No código seguinte, dateTime tem uma data e hora que é depois formatada utilizando o método ofPatter() da classe DateTimeFormatter. Podemos utilizar este formatador para analisar e obter um objecto LocalDateTime utilizando a função LocalDateTime.from().

Uma vez obtido um objecto LocalDateTime, podemos passá-lo para Timestamp.valueOf(localDateTime) para converter a string para um timestamp.

import java.sql.Timestamp;
import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class StringToTimeStamp {
    public static void main(String[] args) throws ParseException {

        String dateTime = "01/10/2020 06:43:21";
        DateTimeFormatter formatDateTime = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.from(formatDateTime.parse(dateTime));
        Timestamp ts = Timestamp.valueOf(localDateTime);

        System.out.println(ts);
    }
}

Resultado:

2020-10-01 06:43:21.0

Utilize Date.getTime() para converter uma String para um carimbo de tempo em Java

O segundo método para converter uma string para um carimbo da hora utiliza múltiplas classes e métodos. Tal como LocalDateTime, podemos utilizar o nosso formato de data e hora na string. Utilizámos a classe SimpleDateFormate() para formatar a string e depois analisámo-la para um objecto Date.

Precisamos do objecto Date porque tem o objecto getTime(), que devolve a data e a hora como long. Podemos passar este valor de long ao construtor do Timestamp, como fizemos abaixo.

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringToTimeStamp {
    public static void main(String[] args) throws ParseException {

        String inDate = "01/10/2020 06:43:21";
        DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        Date date = df.parse(inDate);
        long time = date.getTime();

        Timestamp ts = new Timestamp(time);

        System.out.println(ts);
    }
}

Resultado:

2020-01-10 06:43:21.0

Artigo relacionado - Java DateTime

  • Converter String em DateTime Object em Java