当前位置: 首页 > 面试题库 >

MongoDB,Java:将日期属性检索为UTC

徐唯
2023-03-14
问题内容

我正在将一些实体保存到Mongo数据库中,这些实体具有将UTC设置为时区的Joda
DateTime属性。虽然保存工作正常,并且在集合中看到具有正确值的属性,但是一旦我通过Java检索到实体,时区就会再次设置为UTC + 2。

在集合中:

"created" : ISODate("2013-07-26T20:36:57.890Z")

我正在使用Spring-Data-MongoDB访问数据库。

Category category = mongoTemplate.findById(id, Category.class);

我最终得到了这一点:

2013-07-26T23:05:56.439+02:00

有没有办法告诉Mongo返回存储在日期中的时区?

提示表示感谢,谢谢!


问题答案:

驱动程序以java.util.Date对象的形式返回数据库所具有的内容。它对时间所代表的时区一无所知。它不会在任何地方存储时区。Mongo
Shell始终将时间值表示为UTC。

话虽如此,如果您想始终像UTC一样在应用程序代码中使用它,我认为有一种方法可以告诉JODA库做到这一点:
将Jodatime的DateTime的日期时区默认为UTC



 类似资料:
  • 问题内容: 如何在带注释的方法上检索注释的值? 我有: 问题答案: 获取实例。 获取注释。 获取注释属性值。 就像是: 当然,您需要捕获/处理适当的异常。上述假定您确实是从当前类检索方法(替换用其他方式)和有关方法是公共的(使用,如果事实并非如此)

  • 我有一个ISODate格式的“DateAdd”Mongo集合 所以现在是当地时间1小时后 当我尝试获取2018-08-31 06:00:00之后添加的记录时,使用以下查询,我无法获取UTC中的记录 在MongoDB中搜索日期字段时,如何转换UTC日期?

  • 问题内容: 在MongoDB中,您可以使用函数从ObjectId检索日期。如何使用SQL从MongoDBObjectId中检索日期(例如,在将ObjectId存储在MySQL数据库中的情况下)? 输入示例: 想要的输出: 问题答案: 这可以通过以下方式实现(假设是一个字符串): 它的工作方式如下: 从十六进制字符串中获取前8个字符 将十六进制数字转换为十进制数字,并将其作为字符串返回(代表UNIX

  • 问题内容: 我的json 响应 包含一个 CreatedOn 日期: 我需要将 CreatedOn 转换为简单的日期格式,并 计算从CreatedOn日期到当前日期的差异天数。 当我调试下面的代码字符串 CreatedOn时 显示一个空值。怎么会? 问题答案: 要么 考虑使用JSON方法而不是包含。JSON具有“ has()”,用于验证密钥是否存在。 您还应该确保首先尝试{}捕获{}字符串,以确保

  • 问题内容: 我正在尝试使用查询搜索出生日期 而spring数据mongodb生成以下查询: MongoTemplate:使用查询查找: 字段:类的空值:类com.temp.model.User集合中的用户:user 但是我没有得到任何结果。 我在mongodb中的dob字段: 如何搜索 ISODate格式的 dob ? 问题答案: 这段代码可以很好地满足您的需求: 我的测试是使用以下代码,它可以正

  • 这个问题,在一个例子上解释: 用户指定读取属性“State orProvinceName”。Ldap将其处理为“st”。返回的Searchresult将包含以'st'作为键的key=>值对。如果我查找“state orprovinceName”,这显然是找不到的。我想要那个'st'键--但我不想手动编码替代LDAP字段名称的映射。相关代码部分: 说明:“Found Contact”是SearchR