【问题标题】:Spring MVC : Getting date and time in specific format and persisting itSpring MVC:以特定格式获取日期和时间并将其持久化
【发布时间】:2015-05-14 21:39:42
【问题描述】:

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

笔记模型:

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

【问题讨论】:

  • 时间戳没有时区。
  • @SotiriosDelimanolis :这只是我正在使用的 PostgreSQL 中的选项,所以我是这样写的。此外,在 PostgreSQL 中,还有一个带有时区的 TimeStamp 选项。

标签: java postgresql date spring-mvc


【解决方案1】:

您真的应该将时间戳保存为带有时区的 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}"/>

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

您还应该对 PostgreSQL 标识符使用 snake_case。

【讨论】:

  • 这对我不起作用,直到我将 @DateTimeFormat 更改为 @DateTimeFormat(pattern="dd.MM HH:mm") 我使用的是 Spring 4.1.7
猜你喜欢
  • 2014-12-15
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 2022-07-27
相关资源
最近更新 更多