Введение
Строковое представление даты можно преобразовать в временную метку (timestamp) с использованием классов SimpleDateFormat, Timestamp и Date в Java. В этом лабораторном занятии (LabEx) будут рассмотрены два способа преобразования строки с датой в временную метку.
Преобразование строки в дату с использованием метода 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);
}
}
}
Чтобы запустить эту программу, откройте терминал и перейдите в каталог ~/project/.
Преобразование строки с датой в временную метку (timestamp) с использованием метода valueOf()
Это еще один способ преобразования строки с датой в временную метку (timestamp) с использованием метода valueOf() класса java.sql.Timestamp. Это простой метод, и нет необходимости писать избыточный код.
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);
}
}
}
Скомпилируйте и запустите программу
Откройте терминал и перейдите в каталог ~/project/. Используйте следующую команду для компиляции и запуска кода:
javac StringToTimestamp.java && java StringToTimestamp
Обработка некорректного формата даты
Если строка имеет некорректный формат, вы получите ошибку исключения: java.text.ParseException: Unparseable date:. Чтобы обработать эту ошибку, мы можем добавить блок catch для отображения сообщения об ошибке.
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());
}
}
}
Преобразование эпохи Unix (Epoch Time) в временную метку (Timestamp)
Преобразуйте эпохи времени (epoch time) в временные метки (timestamp) с использованием следующего кода:
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());
}
}
}
Преобразование временной метки (Timestamp) в строку
Преобразуйте временную метку (timestamp) в строковый формат с использованием 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());
}
}
}
Использование класса Calendar
Вместо SimpleDateFormat мы также можем использовать класс Calendar для преобразования строки с датой в временную метку (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 {
// 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());
}
}
}
Использование класса ZonedDateTime
Мы также можем преобразовать строку с датой в временную метку (timestamp) с использованием класса 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 {
// 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());
}
}
}
Запуск программы
Откройте терминал и перейдите в директорию ~/project/. Используйте следующую команду для компиляции и запуска кода:
javac StringToTimestamp.java && java StringToTimestamp
Резюме
В этом практическом занятии (lab) мы научились преобразовывать строку с датой в временную метку (timestamp) на Java различными способами, включая использование классов SimpleDateFormat, Timestamp, Date, Calendar и ZonedDateTime. Методы с использованием SimpleDateFormat и Timestamp являются самыми простыми в реализации, в то время как метод с использованием ZonedDateTime является самым сложным, но предоставляет наибольшую гибкость.



