Wie man ein Datum in String-Format in einen Zeitstempel (Timestamp) umwandelt

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Ein Datum als Zeichenkette kann mithilfe der Klassen SimpleDateFormat, Timestamp und Date in Java in einen Zeitstempel (timestamp) umgewandelt werden. In diesem Lab werden zwei Methoden zur Umwandlung eines Datums als Zeichenkette in einen Zeitstempel behandelt.

Umwandlung einer Zeichenkette in ein Datum mit der Methode parse()

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

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // date in string format
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // creating date format
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            // parsing string to date using parse() method
            Date parsedDate = dateFormat.parse(stringDate);
            // finally creating a timestamp
            Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println(e);
        }
    }
}

Um dieses Programm auszuführen, öffnen Sie das Terminal und navigieren Sie in das Verzeichnis ~/project/.

Umwandlung eines Datums als Zeichenkette in einen Zeitstempel (Timestamp) mit der Methode valueOf()

Dies ist eine weitere Möglichkeit, ein Datum als Zeichenkette in einen Zeitstempel (timestamp) umzuwandeln, indem die Methode valueOf() der Klasse java.sql.Timestamp verwendet wird. Dies ist eine einfache Methode und es ist keine aufwändige Programmierung erforderlich.

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

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // date in string format
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // converting string date to timestamp using valueOf() method
            java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf(stringDate);
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println(e);
        }
    }
}

Kompilieren und Ausführen des Programms

Öffnen Sie das Terminal und navigieren Sie in das Verzeichnis ~/project/. Verwenden Sie den folgenden Befehl, um den Code zu kompilieren und anschließend auszuführen:

javac StringToTimestamp.java && java StringToTimestamp

Umgang mit falschem Datumsformat

Wenn die Zeichenkette im falschen Format vorliegt, erhalten Sie eine Ausnahme (Exception) mit der Fehlermeldung: java.text.ParseException: Unparseable date:. Um diesen Fehler zu behandeln, können wir einen catch-Block hinzufügen, um eine Fehlermeldung anzuzeigen.

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

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // date in string format
        String stringDate = "2021-01-07 02:02:16";
        try {
            // creating date format
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            // parsing string to date using parse() method
            Date parsedDate = dateFormat.parse(stringDate);
            // finally creating a timestamp
            Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Umwandlung von Epoch-Zeit in einen Zeitstempel (Timestamp)

Konvertieren Sie die Epoch-Zeit in Zeitstempel (timestamps) mit dem folgenden Code:

import java.sql.Timestamp;

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

Umwandlung eines Zeitstempels (Timestamp) in eine Zeichenkette (String)

Konvertieren Sie einen Zeitstempel (Timestamp) in einen String-Format mit 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 {
            // create SimpleDateFormat object
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            // format Timestamp object
            String formattedDate = dateFormat.format(timestamp);
            // print formatted date
            System.out.println(formattedDate);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Verwendung der Calendar-Klasse

Anstelle von SimpleDateFormat können wir auch die Calendar-Klasse verwenden, um ein Datum in String-Format in einen Zeitstempel (Timestamp) umzuwandeln.

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 {
            // create Calendar object
            Calendar calendar = Calendar.getInstance();
            // set calendar date with string date
            calendar.setTime(new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").parse(stringDate));
            // convert calendar to timestamp
            java.sql.Timestamp timestamp = new java.sql.Timestamp(calendar.getTimeInMillis());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Verwendung der ZonedDateTime-Klasse

Wir können auch die ZonedDateTime-Klasse nutzen, um ein Datum in String-Format in einen Zeitstempel (Timestamp) umzuwandeln.

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 {
            // create DateTimeFormatter object and specify the format of the string date
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
            // create ZonedDateTime object and parse the string date
            ZonedDateTime zonedDateTime = ZonedDateTime.parse(stringDate, formatter.withZone(ZoneId.systemDefault()));
            // convert ZonedDateTime to timestamp
            Timestamp timestamp = Timestamp.valueOf(zonedDateTime.toLocalDateTime());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Ausführen des Programms

Öffnen Sie das Terminal und navigieren Sie in das Verzeichnis ~/project/. Verwenden Sie den folgenden Befehl, um den Code zu kompilieren und anschließend auszuführen:

javac StringToTimestamp.java && java StringToTimestamp

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in Java ein Datum in String-Format in einen Zeitstempel (Timestamp) umwandelt. Dazu haben wir verschiedene Methoden verwendet, darunter die Klassen SimpleDateFormat, Timestamp, Date, Calendar und ZonedDateTime. Die Methoden mit SimpleDateFormat und Timestamp sind am einfachsten zu implementieren, während die Methode mit ZonedDateTime die komplexeste, aber auch die flexibelste ist.