【问题标题】:java.util.Date Strange issue showing future date in spring + hibernatejava.util.Date 在春季+休眠中显示未来日期的奇怪问题
【发布时间】:2015-11-15 14:35:34
【问题描述】:

我正在做一个使用 Spring mvc 4 +Hibernate 的小项目。

在 jsp 文件中我使用的是 jquery DatePicker

当我使用时在我的实体中

@NotNull
    @Column(name = "schedule_date")
    private Date scheduleDate; 

然后在控制器中它的赋值为

  scheduleDate = Mon Apr 11 00:00:00 IST 2016

这是未来的日期(近 5 个月的未来日期)但是当我使用时

   @NotEmpty 
    @Column(name = "schedule_date")
    private String scheduleDate; 

然后在控制器中它的赋值为

   scheduleDate = 16/11/2015 

这是正确的值。我不知道这里发生了什么

我应该如何解决这个问题因为我想使用 Date 而不是 String 作为 scheduleDate 变量的数据类型

【问题讨论】:

  • 这听起来像是格式问题。您的日期如何存储在数据库中?数据类型是什么?
  • 因为我在控制器中遇到问题我还没有写 DAO

标签: java spring hibernate date spring-mvc


【解决方案1】:

谢谢大家的回复。我解决了。现在它给出正确的日期

Mon Nov 16 00:00:00 IST 2015  

相比

Mon Apr 11 00:00:00 IST 2016

我在控制器中使用的代码是

@InitBinder
public void initBinder(WebDataBinder webDataBinder) {
 SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
 dateFormat.setLenient(false);
 webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
 }

【讨论】:

    【解决方案2】:

    当您看到 Date 类型的值时,它就是 toString 表示形式。

    您遇到的问题是 datePicker 是 JavaScript 并且需要日期的字符串表示形式。

    所以,不要直接将日期属性从模型暴露给视图,而是使用日期格式化程序来传递日期。

    【讨论】:

    • 我是 Spring 新手 如果您有任何示例,请告诉我。我不明白您想说什么 :) 还要提到为什么在使用 Date 作为数据类型时显示未来日期
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2015-07-13
    • 2013-01-11
    • 1970-01-01
    相关资源
    最近更新 更多