【问题标题】:MongoDB date time insertion is not happening perfectly from java [duplicate]MongoDB日期时间插入没有从java完美地发生[重复]
【发布时间】:2016-12-23 06:06:08
【问题描述】:

我在本地机器上运行代码。 mongoDb 也在本地运行。所以如果我没记错的话,时区应该没有问题。我正在写这个:

DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateHourMinuteSecond();
LocalDateTime date=new LocalDateTime();
DateTime dateTime = dateTimeFormatter.parseDateTime(dateTimeFormatter.print(date));

BasicDBObject basicDBObject = new BasicDBObject();
      basicDBObject.put("batchId",batchId);
      basicDBObject.put("batchStatus",BatchStatus.STARTED.toString() );

        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
        System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>: "+ date.toString());
        basicDBObject.put("startTime",dateTime.toDate());

 mongoTemplate.getCollection(collectionName).insert(basicDBObject);

系统输出正在打印 2016-12-23T11:24:54.907。在 db 中,我得到 2016-12-23 05:54:54.000Z。有人可以帮忙吗?

谢谢, 苏米特。

【问题讨论】:

  • 这是时区问题。设置时区,然后检查
  • TimeZone.setDefault 工作吗?
  • 这是按照设计的方式工作的。Mongo 以 UTC 存储日期时间。从数据库中读回所需区域时更改为所需区域。

标签: java mongodb date datetime datetime-format


【解决方案1】:

Mongo 将时间存储为UTC 时间,在您的程序中将 Timezone 设置为本地。

LocalDateTime localtDateAndTime = LocalDateTime.now(ZoneId.of("Australia/Sydney"));

【讨论】:

    猜你喜欢
    • 2014-09-24
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 2017-02-12
    • 2020-02-23
    相关资源
    最近更新 更多