【问题标题】:Extracting TimeZone from Mongo Date从 Mongo 日期中提取时区
【发布时间】:2014-06-24 20:37:41
【问题描述】:

我有一个日期字符串,格式为:"Fri Jun 20 16:14:00 GMT+0530 2014" 如您所见,日期 (GMT+0530) 中有 TimeZone 信息。

但是一旦我们使用 mongodb 'date' 数据类型将其存储在 MongoDB 中。 我看到它是以这样的格式存储的:'2014-06-20 10:44:00.470Z'

如何从该日期提取“原始”时区??
(我正在使用 Java 从 mongo 存储/提取数据)

【问题讨论】:

标签: java mongodb


【解决方案1】:

MongoDB 使用的 BSON Date 数据类型只是自 UTC 1970 年 1 月 1 日以来毫秒的 64 位整数计数。因此,如果您想跟踪时间戳的原始时区,则必须单独存储它因为它在转换为Date 时会丢失。

【讨论】:

  • JohnnyHK> 转换为 UTC 时 - 是否会考虑源日期时间的时区?例如考虑这些:2014 年 7 月 3 日 14:25:00 EDT、2014 年 7 月 3 日 14:25:00 PST、2014 年 7 月 3 日 14:25:00 IST(只有 TZ 变化)-这些转换为完全相同的 UTC,还是不同的 UTC 值?
  • @Jasper 这些都会根据每个时区的 UTC 偏移量转换为不同的 UTC 值。
【解决方案2】:

MongoDB 以ISO 8601 格式存储日期。没有直接的方法可以从 Java 日期格式转换为它,但 here's 有一个类似的问题,请查看接受的答案,它应该为您提供有关如何执行此操作的线索。

【讨论】:

  • 那个也是错的。 :-) ISODate 只是 MongoDB shell 中的一个构造函数,用于帮助将 ISO 8601 字符串转换为原生 Date
  • 无论哪种情况,他看到的存储在 MongoDB 中的字符串绝对是 ISO 8601 格式。即使您对 MongoDB 不以这种格式存储它的看法是正确的,这对他来说也是最终结果。这就是为什么他应该参考我在答案中链接的已回答问题,这应该可以解决他的问题。
  • 关键是它在 MongoDB 中不是作为字符串存储的。 OP 所看到的只是它在他们用来查询它的任何工具(例如 MongoDb shell)中的显示方式。
  • 目前 MongoDB 将尝试将 tzs 剥离为 utz,有一些方法可以阻止它这样做,尽管我不会在这里提及它们,因为我认为数据库不应该存储 tz,tz 应该是查看客户位置依赖。
猜你喜欢
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2023-03-18
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多