Я работаю над приложением 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 без часовой пояс. Любая помощь будет приятной. Большое спасибо.
Вы действительно должны действительно сохранить временные метки в формате 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.