【问题标题】:Getting Weird Data while Parsing Date在解析日期时获取奇怪的数据
【发布时间】:2014-04-07 04:47:02
【问题描述】:

我想从文本框接收到的字符串中解析日期,但值的某些部分没有解析并给了我一些默认值并存储在我的数据库中:

在我的数据库中,我在 postgresql 中采用了字段类型 Timestamp without time zone。

以下是我的代码:

Timestamp ts= null;
SimpleDateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy");
Date convertedDate = dateFormat.parse(command.getHolidayDate());
System.out.println("Date ::" + convertedDate);
System.out.println("T :: "+convertedDate.getTime());
System.out.println("Received :: "+command.getHolidayDate());
ts = new Timestamp(convertedDate.getTime());
entity.setHolidayDate(ts);

这里 entity.setHolidayDate 将接收日期存储到 DB。

System.our.println 结果:

Date ::Wed Jan 09 00:08:00 IST 2013
T :: 1357670280000
Received :: 08/09/2013

我在文本框中输入以下日期:

08/09/2013

在我的数据库表中,它存储为:

2013-01-09 00:08:00

为什么要这样保存数据我不知道。 一个问题是它也需要一些我不想要的随机时间。 对此有任何建议。 帮助。

【问题讨论】:

    标签: java postgresql parsing timestamp


    【解决方案1】:

    我认为您的 SimpleDateFormat 格式有问题...

    mm 是“分钟”,而不是月份。

    所以查看2013-01-09 00:08:00,您可以看到08 代表小时。

    我们假设您想要获得2013-08-09 00:00:00,这意味着您应该改用MM/dd/yyyy 的格式

    查看SimpleDateFormat了解更多详情

    【讨论】:

    • 先生,我已经在控制台上显示了convertedDate.getTime() 并显示了类似1357670280000 的内容,如何解释它?这是什么意思?我已经使用MM instead of mm 并解决了这个问题。
    • 1357670280000 是自 Unix 纪元以来的毫秒数。这就是 Java 中时间的计量方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    相关资源
    最近更新 更多