【问题标题】:Joda DateTime DateTimeZone乔达 DateTime DateTimeZone
【发布时间】:2014-12-12 04:58:34
【问题描述】:

+我有一个时间跟踪应用程序,它使用 joda DateTime 通过 ORM-lite 保持开始/结束时间。 ORM-lite 使用它的 Millis 将 Joda DateTime 存储在数据库中。 Joda DateTime.getMillis() 以 UTC 格式返回毫秒数。

几天后,我们从夏令时切换到正常时间,我不能 100% 确定我的应用是否能正确处理这个问题。

为了测试它,我尝试禁用设备的“自动日期和时间(使用网络提供的时间)”设置,并将日期更改为具有正常时间的日期。所选时区的文本立即从 GMT +02:00 更改为 GMT+01:00

我希望我的所有时间记录都提前一小时(这实际上是时间跟踪应用程序的失败),但事实并非如此。 当我将时区设置为例如阿布扎比格林威治标准时间 +4:00 我所有的时间记录都是两个小时后。 这对我来说很有意义,因为条目是使用我的默认时区创建的,即 GMT +02:00。 当我从夏令时切换到正常时间时,为什么不是这种情况?

干杯, 斯蒂芬

【问题讨论】:

  • 不清楚你在问什么。请提供示例代码以及具体的实际值和预期值,包括所涉及的时间戳和时区。谢谢。
  • 感谢您的评论。我已经找到答案并将其发布在下面。

标签: java android timezone jodatime dst


【解决方案1】:

我想我对事情的运作方式有错误的理解。

示例:

DateTime dtNow = new DateTime(1414479634046);

我认为从正常时间切换到 DST 时“dtNow”会发生变化。我认为 DST 表现得像一个单独的时区,但事实并非如此。 当从 Millis Joda “恢复” DateTime 时,会查看日期并确定它是正常的还是 DST。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2014-09-30
    • 2021-03-03
    • 2015-01-15
    • 2013-03-18
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多