mongodb ISODate 问题

2024-01-22

我正在使用java(IDE是eclipse)在mongodb上查询。下面是我的java代码:

DBObject query = new BasicDBObject();
ObjectId id =new ObjectId("529f280b90ee58cb7732c2b8");
query.put("_id", id);
DBCursor cursor = collection.find(query);
while(cursor.hasNext()) {
    DBObject object = (DBObject)(cursor.next());
    System.out.println(object.get("_id"));
    System.out.println(object.get("createDate"));
}

问题发生在类型为 ISODate、值为ISODate("2013-10-21T01:34:04.808Z"),但是println我的代码的结果是'Mon Oct 21 **09**:34:04 CST 2013', 时间已从 01 更改为 09。我不知道发生了什么事!

有人可以帮忙吗?


时间没有改变。鉴于示例中的“CST”和 8 小时时差,您必须在中国。如果您将“CST”解释为“中国标准时间 http://www.timeanddate.com/library/abbreviations/timezones/asia/cst.html“ (而不是中部标准时间 http://www.timeanddate.com/library/abbreviations/timezones/na/cst.html在美国),那么您的时区比美国早 8 小时UTC https://en.wikipedia.org/wiki/Coordinated_Universal_Time/格林威治标准时间。因此,当 UTC/GMT 凌晨 1 点时,台北墙上的时钟将同时显示“上午 9 点”。

小一点:那些时区的三字母代码已经过时,应该避免。它们既不是标准化的也不是独特的。使用正确的时区名称 http://joda-time.sourceforge.net/timezones.html.

主要观点:问题在于如何从 MongoDB 中提取表示日期时间的值。

我不了解 MongoDB,而且他们的医生 http://docs.mongodb.org/manual/core/shell-types/很混乱,所以我无法进一步帮助你。如果您可以检索ISO 8601 https://en.wikipedia.org/wiki/ISO_8601如第一个示例中所示的字符串,这比第二个示例的格式要好得多。

如果您想在 Java 中使用日期时间值,您可以将 ISO 8601 字符串直接提供给DateTime http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html构造函数在乔达时间 http://www.joda.org/joda-time/ 2.3.

DateTime dateTime = new DateTime( "2013-10-21T01:34:04.808Z" );

Update

This doc http://docs.mongodb.org/ecosystem/drivers/java-types/#JavaTypes-Dates/Times说 MongoDB 的 Java 驱动程序将为您提供一个 java.util.Date 对象。这解释了你的问题。与 Java 捆绑在一起的 java.util.Date 和 Calendar 类是出了名的糟糕。一个问题是,虽然 Date 实例没有时区,但它的toString()方法使用 JVM 的默认时区来呈现字符串。 Date 的 toString 方法使用了那种可怕的模糊格式。

您应该避免使用 java.util.Date 和 Calendar 类。现在使用乔达时间 http://www.joda.org/joda-time/图书馆。在 Java 8 中,您可以使用新的java.time.* 类 http://download.java.net/jdk8/docs/api/java/time/package-summary.html.

您可以在 java.util.Date 和 Joda-Time 之间来回转换。将 Date 实例传递给 Joda-Time 构造函数。要返回,请致电 Joda-TimetoDate() format.

请注意,虽然 java.util.Date 中没有时区信息,但 DateTime 对象却分配了时区。如果您需要 UTC/GMT,请指定DateTimeZone.UTC.

您的代码应该看起来更像:

java.util.Date date = object.get("createDate");
DateTime createDateTime = new DateTime( date, DateTimeZone.forId( "Asia/Manila" ) );
System.out.println( createDateTime );
… do some work …
java.util.Date dateGoingBackToMongoDB = createDateTime.toDate();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongodb ISODate 问题 的相关文章

随机推荐

  • 如何让工具提示出现在弹出窗口中?

    在我的机器上 此代码在将鼠标悬停在引导字形图标上时生成一个工具提示 span class glyphicon glyphicon info sign tt title span 但是 当我将工具提示堆叠在弹出窗口内时 用于自行生成工具提示的
  • 如果是HTTPS请求,如何在node.js中找到远程地址?

    你好 在node js中 如果是http请求 我可以在req connection remoteAddress处获取remoteAddress 那么 如果是https请求 如何获取呢 我发现有 req socket remoteAddres
  • 如何使用 cxf 组件使用 Apache Camel 调用第三方 Web 服务

    我浏览了 Apache Camel 网站和 Camel in Action 上的示例 两者都重点关注公开 Web 服务 我在网上找到的唯一示例不起作用 我正在尝试访问第三方网络服务 wsdl http www webservicex net
  • 从表格中删除内容并重新格式化表格

    我想要做 我的页面以以下格式显示表格的数据 有什么方法可以删除具有空白值的内容并重新格式化表格 如下所示 额外细节 实际表格中的任何值都可能为空白 请参阅第一张图片 我想删除那个特定的Test行 具有空白值 并通过均匀分布剩余内容来重新格式
  • SBT 挂起等待孤立子进程完成

    在我的 SBT 0 13 16 版本中 我有以下任务 startThing var bin path s file getAbsolutePath bin val result s bin path start thing if resul
  • iOS 5:您可以覆盖特定类中的 UIAppearance 自定义吗?

    我正在构建一个带有许多视图控制器的应用程序 我有一个UITabBarController其中容纳 4UINavigationController 我希望所有导航栏都是我的自定义颜色 比如蓝色 我通过在应用程序委托中执行此操作来实现 UINa
  • 设置鼠标位置

    我需要能够将鼠标位置设置到屏幕 窗口的中间 我怎样才能做到这一点 该文档似乎表明CGDisplay移动光标到点 http developer apple com library mac documentation GraphicsImagi
  • Git 远程恢复

    我是 Git 新手 正在使用 WebStorm 来推送和拉取我的代码 我们正在开展一个共同的项目 昨晚我的朋友更新了一些代码并推送了更改 今天 我拉取了代码并合并了更改 但我错误地保留了更改并放弃了拉取请求提供的更改 然后将这些更改推送到
  • 如何获取 Laravel CSRF-token 以通过 React 中的 fetch post 请求发送它?

    我正在使用开发网络应用程序创建反应应用程序和拉维尔 创建反应应用程序在 localhost 3000 上运行开发项目 而 laravel 后端在 localhost 8080 上运行 这是我的代码的一部分 const onSubmit e
  • 修复了 Highcharts 中的 y 轴标签宽度

    我正在构建一个数据演示 其中两个 Highcharts 图表垂直堆叠 旨在共享相同的 x 轴单位和对齐方式 就像这样 请注意 由于两个图表的 y 轴范围不同 因此 y 轴标签的宽度不同 因此图表本身的宽度略有不同 破坏了良好的 x 轴对齐
  • 如何让 System.Net.Http.HttpClient 不遵循 302 重定向?

    Using 来自 NuGet 的 HttpClient http nuget org packages HttpClient 应用程序使用 client PostAsync 发送帖子 我希望它不遵循 302 重定向 how 我想我可以设置A
  • 将元描述和开放图谱协议描述合并到一个标签中

    是否可以将元描述和开放图协议描述结合起来 当它们包含相同的内容时合而为一 是的 您可以将它们结合起来 为了测试它 我制作了下面的简单 HTML 页面 将其上传到服务器 然后通过 Facebook 运行该页面网址检查器 https
  • 更新 LayoutView 的模型

    JSBin 链接 http jsbin com rosadomisa edit html js console output 单击 Clicks 链接可查看显示更新后的模型数据的控制台 但原始显示的 HTML 不会更改 更新 LayoutV
  • 将 Windows 对话框错误消息重定向到控制台

    有谁知道如何重定向 捕获模式 Windows 错误对话框 对于仅尝试运行程序并捕获退出代码和 stdout stderr 输出的非交互式命令行程序来说 这确实是个问题 此问题的最新实例是一个模态 Windows 对话框 其形式如下 The
  • AWS S3 最大文件和上传大小

    AWS S3 文档说 单个 Amazon S3 对象的大小范围最小为 0 字节到最大 5 TB 最大的物体可以 一次 PUT 上传的大小为 5 GB 如果我只能上传 5GB 的文件 如何存储 5TB 的文件 根据文档here http do
  • Python 3.5 async for 阻止 ioloop

    我有一个带有两个处理程序的简单 aiohttp 服务器 第一个在中进行一些计算async for环形 第二个仅返回文本响应 not so long operation以最慢的递归实现返回第 30 个斐波那契数 大约需要一秒钟 def not
  • Akka.Net 发送巨大消息(最大帧大小)

    我有一个关于增加最大帧大小和发送 接收缓冲区大小值的问题 他们的高度有限制吗 我将大量数据传递到系统中 比如 20mb 然后用于计算一些结果并返回 将上述参数设置为 100mb 会导致消息被丢弃 在这种情况发生之前我可以通过的最大块大约是
  • 如何在 LDAP 中按 DN 进行搜索?

    我正在从 LDAP 中提取有关用户的信息 这包括 directReports 它是完整的CN cnBlah OU ouBlah DC dcBlah形式 我正在尝试再次查找有关该记者的信息 到目前为止 我能够真正找到所述用户的唯一方法是打破C
  • 关于“==”运算符行为的解释

    在下面的非常简单的示例中 我无法理解 运算符的行为 A lt c 10 20 10 10 20 30 B lt c 40 50 60 70 80 90 df lt data frame A B df df A c 10 20 it retu
  • mongodb ISODate 问题

    我正在使用java IDE是eclipse 在mongodb上查询 下面是我的java代码 DBObject query new BasicDBObject ObjectId id new ObjectId 529f280b90ee58cb