Временные типы в 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

Другие вопросы по тегам