【问题标题】:I store a JAVA date with UNIX timestamp in MongoDB and got a wrong answer我在 MongoDB 中存储了一个带有 UNIX 时间戳的 JAVA 日期并得到了错误的答案
【发布时间】:2013-05-08 08:27:56
【问题描述】:

当我将 UNIX 时间戳存储到 MongoDB 时,我遇到了一个大问题,这让我的数据库变得很糟糕。 代码如下:

DBObject tmp = new BasicDBObject("_id", basicUrl+ob.getString("id"));//new a DBObject,it doesn't matter
 Date date= new Date(1316410912);//1316410912 is a UNIX timestamp
 tmp.put("created_at",date);
 mg = new Mongo();
 test=db.getCollection("qq");
 test.insert(tmp);

完成添加过程,我打印出查询结果:

{ "_id" : "http://t.qq.com/p/t/163173122485971" , "created_at" : { "$date" : "1970-01-16T19:51:58.125Z"}}

但实际时间应该是“Mon Sep 19 2011 13:41:52”

请帮助我,告诉我我的代码有什么问题。

【问题讨论】:

  • 试试System.out.println(date);看看打印了什么。

标签: java mongodb-java


【解决方案1】:

Date 以毫秒为单位,而不是以秒为单位。

 Date date= new Date(1316410912000l);

这将产生正确的日期。详情请见Javadocs

【讨论】:

  • 优秀的答案!非常感谢!
  • 那我们不应该乘以 1000 吗?
【解决方案2】:

它应该以毫秒为单位,而不是秒。

Date(long date) 

分配一个 Date 对象并初始化它以表示指定的 自标准基准时间以来的毫秒数,称为“ 纪元”,即 1970 年 1 月 1 日 00:00:00 GMT。

【讨论】:

    【解决方案3】:

    你忘记了女士。试试看

    1316410912000l
    

    这应该会让你更接近你想要的日期。

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      相关资源
      最近更新 更多