【问题标题】:MySQL confusing Timezone of stored Date object [closed]MySQL混淆存储日期对象的时区[关闭]
【发布时间】:2012-01-27 14:25:49
【问题描述】:

有没有人见过 MySQL 在将 Date 对象存储到表时对哪个时区适用于 java.util.Date 对象感到困惑的情况?我看到 MySQL 偶尔会应用偏移量 = 0 的时区,然后其他时候 MySQL 会应用偏移量 = -12 的时区。我在这两种情况下都调试了代码,并且代码始终报告偏移量 = 0 的时区。关于可能发生的事情的任何想法,这里?提前谢谢。

【问题讨论】:

  • 请显示一些代码。 “MySQL 是如何应用时区的”?

标签: java mysql date


【解决方案1】:

Date 对象没有 时区。它只是指一个瞬间。

目前尚不清楚您从哪里获得时区,但如果您希望 Date 具有关联的时区,您应该重新考虑您的设计。

【讨论】:

  • @MarcusAdams:它是全球性的——瞬间就是瞬间。如果您想象不同国家的两个人打电话(没有延迟),他们都会同意 java.util.Date 表示“当前时间”,即使他们对“现在”的本地解释会与众不同。 (表示恰好是自 Unix 纪元以来的毫秒数,因此在 UTC 中非常有效,但这只是一个任意的零点。)
  • 实际上,我理解并欣赏 Java 日期概念的优雅(无论您碰巧站在地球上的什么地方,某个瞬间都是同一瞬间)。但是,我的用户关心时区,因为他们希望看到表示为本地(即某个任意的第三时区)时间的日期。因此,一旦我检索到存储的日期,我就必须执行日期算术。
  • @SamHeymann:这很好 - 但您不应该期望它会作为 Date 对象的一部分保留,您的问题似乎暗示了这一点。 (实际上,Java 日期/时间 API 通常很糟糕 - Joda Time 的要好得多。但那是另一回事。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多