Временные типы в JPA теряют AM/PM
Из того, что я прочитал, есть 3 типа TemportalTypes, которые вы можете выбрать при работе с датами в JPA. Они есть:
DATE
Map as java.sql.Date
TIME
Map as java.sql.Time
TIMESTAMP
Map as java.sql.Timestamp
Я использовал TIMESTAMP
и в качестве примера, он сохраняет мои даты так: 2014-10-10 02:12:39
Что я заметил, так это то, что я теряю AM/PM со своими датами. Предположим, моя дата пришла в качестве строки 2014-10-10 02:12:39 PM
было бы сохранено как 2014-10-10 02:12:39
, Когда я пошел к нему, это было бы AM
вместо PM
так как мой формат даты MMM dd, yyyy HH:mm:ss a
,
Какой TemporalType я должен использовать, чтобы сохранить эту информацию AM/PM в базе данных?
2 ответа
AM/PM/24H - это просто форматирование даты. В яве Date
, Calendar
и т.д. сохранить дату как long
который содержит миллисекунды с 01.01.1970 00:00:00.
Когда я храню даты в объектах JPA, я обычно использую Calendar
интерфейс и аннотировать поле с TemporalType.TIMESTAMP
(который сохранит информацию чч: мм: сс):
@Temporal( TemporalType.TIMESTAMP )
privete Calendar lastUpdated;
Подводя итог: вы не можете сохранить информацию AM / PM в базе данных, потому что это зависит от локали. Например, в моей стране мы используем 24-часовой формат для дат, а вы, очевидно, используете 12-часовой +AM/PM. Чтобы правильно отобразить дату, вы должны использовать формат, соответствующий локали пользователя.
Хм... невозможно "потерять" AM/PM - может быть, вам стоит прочитать, что это на самом деле: http://en.wikipedia.org/wiki/12-hour_clock, http://en.wikipedia.org/wiki/24-hour_clock.
Вам просто нужно отформатировать ваше время / дату так, как вы этого хотите: /questions/29595343/otobrazhenie-tekuschego-vremeni-v-12-chasovom-formate-s-ampm/29595351#29595351