Spring MVC: получение даты и времени в определенном формате и сохранение их

1

Я работаю над приложением Spring-MVC, в котором я хотел бы сохранить дату в определенном формате (см. Ниже). Итак, здесь пользователь не вводит дату, но я генерирую ее в бэкэнд. Я хотел бы сохранить в PostgreSQL в том же формате. Моя проблема заключается в том, какой формат я использую в базе данных, чтобы сохранить его в формате, указанном ниже, и о том, как создать дату в формате, указанном в модели. Надеюсь, мой вопрос был ясен. Если есть сомнения, пожалуйста, дайте мне знать.

Модель заметок:

import java.sql.Timestamp;

@Entity
@Table(name="groupnotes")
public class GroupNotes {

    @Id
    @Column(name="mnoteid")
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "mnote_gen")
    @SequenceGenerator(name = "mnote_gen",sequenceName = "mnote_seq")
    private int mnoticesid;

    @Column(name = "notedate")
    @DateTimeFormat(pattern = "dd.MM HH:MM") // I would like this format
    private Timestamp noteDate;

На служебном уровне, прежде чем этот формат был необходим, я получал дату следующим образом:

 notes.setNoteDate(new Timestamp(System.currentTimeMillis()));

Но это дает его в своем собственном формате.

В PostgreSQL я сохраняю его в Timestamp без часовой пояс. Любая помощь будет приятной. Большое спасибо.

  • 0
    Временная метка не имеет часового пояса.
  • 0
    @SotiriosDelimanolis: Это просто вариант в PostgreSQL, который я использую, поэтому я написал его таким образом. Также в PostgreSQL есть опция TimeStamp с часовым поясом.
Теги:
spring-mvc
date

1 ответ

2
Лучший ответ

Вы действительно должны действительно сохранить временные метки в формате ISO с часовым поясом. И вы должны установить часовой пояс сервера базы данных в UTC.

@Temporal(TemporalType.TIMESTAMP)
@Column(columnDefinition = "timestamptz")
@DateTimeFormat("dd.MM HH:mm") //this is for display and parsing, not storage
private Date noteDate;

Затем вы можете отображать их с помощью @DateTimeFormat в JSP:

<spring:eval expression="${noteDate}"/>

Кроме того, ваш формат даты, вероятно, не тот, который вы хотите.

Вы также должны использовать snake_case для идентификаторов PostgreSQL.

  • 0
    Это не работало для меня, пока я не изменил @DateTimeFormat на @DateTimeFormat (pattern = "dd.MM HH: mm") Я использую Spring 4.1.7

Ещё вопросы

Сообщество Overcoder
Наверх
Меню