Como Converter Data String para Timestamp

JavaBeginner
Pratique Agora

Introdução

Strings de data podem ser convertidas em timestamps usando as classes SimpleDateFormat, Timestamp e Date do Java. Este laboratório cobrirá duas maneiras de converter uma string de data em um timestamp.

Converter String para Data usando o método parse()

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

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // data em formato string
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // criando o formato da data
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            // convertendo a string para data usando o método parse()
            Date parsedDate = dateFormat.parse(stringDate);
            // finalmente criando um timestamp
            Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println(e);
        }
    }
}

Para executar este programa, abra o terminal e navegue até o diretório ~/project/.

Converter data String para Timestamp usando o método valueOf()

Esta é outra forma de converter uma string de data em um timestamp usando o método valueOf() da classe java.sql.Timestamp. Este é um método simples e não há necessidade de codificação adicional (overhead coding).

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

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // data em formato string
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // convertendo a string de data para timestamp usando o método valueOf()
            java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf(stringDate);
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println(e);
        }
    }
}

Compilar e executar o programa

Abra o terminal e navegue até o diretório ~/project/. Use o seguinte comando para compilar e, em seguida, executar o código:

javac StringToTimestamp.java && java StringToTimestamp

Lidar com Formato de Data Incorreto

Se a string estiver em um formato incorreto, você receberá um erro de exceção: java.text.ParseException: Unparseable date:. Para lidar com este erro, podemos adicionar um bloco catch para exibir uma mensagem de erro.

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

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // data em formato string
        String stringDate = "2021-01-07 02:02:16";
        try {
            // criando formato de data
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            // convertendo string para data usando o método parse()
            Date parsedDate = dateFormat.parse(stringDate);
            // finalmente criando um timestamp
            Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Converter Tempo Epoch para Timestamp

Converta o tempo epoch para timestamps usando o seguinte código:

import java.sql.Timestamp;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // tempo epoch
        long epochTime = 1609934536172L;
        try {
            // criar objeto Timestamp
            Timestamp timestamp = new Timestamp(epochTime);
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Converter Timestamp para String

Converta Timestamp para formato string usando SimpleDateFormat.

import java.text.SimpleDateFormat;
import java.sql.Timestamp;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // timestamp
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());

        try {
            // criar objeto SimpleDateFormat
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            // formatar objeto Timestamp
            String formattedDate = dateFormat.format(timestamp);
            // imprimir data formatada
            System.out.println(formattedDate);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Usando a Classe Calendar

Em vez de SimpleDateFormat, também podemos usar a classe Calendar para converter uma data string em timestamp.

import java.util.Calendar;
import java.sql.Timestamp;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // string date
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // criar objeto Calendar
            Calendar calendar = Calendar.getInstance();
            // definir a data do calendário com a data string
            calendar.setTime(new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").parse(stringDate));
            // converter o calendário para timestamp
            java.sql.Timestamp timestamp = new java.sql.Timestamp(calendar.getTimeInMillis());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Usando a Classe ZonedDateTime

Também podemos converter uma data string em timestamp usando a classe ZonedDateTime.

import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.sql.Timestamp;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // string date
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // criar objeto DateTimeFormatter e especificar o formato da data string
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
            // criar objeto ZonedDateTime e analisar a data string
            ZonedDateTime zonedDateTime = ZonedDateTime.parse(stringDate, formatter.withZone(ZoneId.systemDefault()));
            // converter ZonedDateTime para timestamp
            Timestamp timestamp = Timestamp.valueOf(zonedDateTime.toLocalDateTime());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Executar o Programa

Abra o terminal e navegue até o diretório ~/project/. Use o seguinte comando para compilar e, em seguida, executar o código:

javac StringToTimestamp.java && java StringToTimestamp

Resumo

Neste laboratório, aprendemos como converter uma data String em um Timestamp em Java usando diferentes métodos, incluindo SimpleDateFormat, Timestamp, Date, Calendar e a classe ZonedDateTime. Os métodos SimpleDateFormat e Timestamp são os mais fáceis de implementar, enquanto o método ZonedDateTime é o mais complicado, mas oferece a maior flexibilidade.