java .time и JDB C 4.2
Я настоятельно рекомендую использовать java .time, современный Java API даты и времени, для работы с датой и временем, а не старый Timestamp
класс. В этом примере фрагмента показано, как вы извлекаете метку времени из своей базы данных и форматируете ее для пользователя:
DateTimeFormatter formatter = DateTimeFormatter
.ofLocalizedDateTime(FormatStyle.SHORT)
.withLocale(Locale.forLanguageTag("pt"));
PreparedStatement query = yourDatabaseConnection.prepareStatement(
"select your_timestamp_column from your_table where id = 4;");
ResultSet rs = query.executeQuery();
if (rs.next()) {
OffsetDateTime dateTime
= rs.getObject("your_timestamp_column", OffsetDateTime.class);
String str = dateTime.format(formatter);
System.out.println(str);
}
Пример вывода будет
25/11/11 1990 1990: 35
Пожалуйста, вставьте языковой тег вашего пользователя, куда я положил pt
(для португальского). Или пропустите вызов withLocale
, чтобы полагаться на локаль по умолчанию вашей JVM. И обратите внимание на использование getObject()
вместо getTimestamp()
.
Я использовал OffsetDateTime
в коде, исходя из предположения, что тип данных в вашей базе данных равен timestamp with time zone
, что рекомендуется для метки времени. В этом случае вам может также потребоваться преобразовать временную метку в часовой пояс пользователя перед ее форматированием.
Если тип данных timestamp
без часового пояса, вместо этого используйте LocalDateTime
точно таким же образом.
Ссылка: Oracle учебное пособие: Дата и время объяснение, как использовать java .time.