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.
Konvertieren Sie einen String in ein Datum mit der parse()-Methode
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/.
Konvertieren Sie ein Datum in String-Format in einen Zeitstempel (Timestamp) mit der valueOf()-Methode
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 Sie das Programm
Ö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());
}
}
}
Konvertieren Sie die Epochenzeit (Epoch Time) 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());
}
}
}
Konvertieren Sie einen Zeitstempel (Timestamp) in einen 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());
}
}
}
Führen Sie das Programm aus
Ö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.



