Spring MVC:以特定格式获取日期和时间并持久化

时间:2015-03-12 16:07:13

标签: java postgresql date spring-mvc

我正在开发一个Spring-MVC应用程序,我希望以特定格式保存日期(如下所述)。所以在这里,用户没有输入日期,但我在后端生成它。我想以相同的格式保存在PostgreSQL中。 我的问题是我在数据库中使用哪种格式以下面提到的格式保存它,以及如何以Model中指定的格式生成日期。我希望我的问题很明确。如果有任何疑问,请告诉我。

笔记型号:

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中,我目前正在没有时区的时间戳中保存它。你能帮忙的话,我会很高兴。非常感谢。

1 个答案:

答案 0 :(得分: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;

然后,您可以在JSP中使用@DateTimeFormat显示它们:

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

此外,您的日期格式可能不是您想要的。

您还应该将snake_case用于PostgreSQL标识符。