【问题标题】:Joda-Time datetime daylight saving time for Europe/Berlin欧洲/柏林的 Joda-Time 日期时间夏令时
【发布时间】:2014-05-19 23:57:32
【问题描述】:

如何解析带有Joda-Time datetime 的日期字符串,它使用正确的时区和夏令时?

作为 scala 中的示例,我尝试解析字符串“2014-04-07 01:00:00.000”(没有时区信息)。这个日期来自 MySQL,应该是 tz Europe/Berlin +01:00。我喜欢的是根据 2014-04-07 00:00:00+01:00 的 joda 日期时间,这是欧洲/柏林目前不在 DST (GMT +1) 上的时区。

val fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS").withZone(DateTimeZone.forID("Europe/Berlin"))
val dt = fmt.parseDateTime("2014-04-07 01:00:00.000")

不幸的是,Joda-Time 将日期解析为 2014-04-07T01:00:00.000+02:00,这是当前错误的偏移量(如果是 01:00,则为 02:00)

任何想法如何让 Joda-Time 使用正确的 DST 偏移量解析日期?

【问题讨论】:

  • 我生活在“欧洲/柏林”时区,可以确认实际上(在 4 月 - 也可以查看您的字符串)我们有夏令时,偏移 UTC+02:00。 JodaTime 是对的。
  • 谢谢!由于我的 +0100 偏移量错误,我被 python 弄糊涂了

标签: java scala timezone jodatime datetime-format


【解决方案1】:

Joda-Time 是正确的。您对柏林 +01:00 的假设是不正确的。您没有考虑夏令时。

根据 TimeZoneConverter.com 上的this page“欧洲/柏林”时区,Daylight Saving Time (DST) 于 2014 年 3 月 30 日星期日凌晨 02:00:00 开始。当本地时钟拨快 1 小时时。根据time zone names 的维基百科列表,这意味着柏林从比世界标准时间(+01:00)提前一小时转变为比世界标准时间提前两小时(+02:00)。

【讨论】:

    猜你喜欢
    • 2011-04-29
    • 2021-09-16
    • 2019-06-22
    • 2020-05-24
    • 2021-05-03
    • 1970-01-01
    • 2023-03-12
    • 2011-12-27
    • 2016-03-11
    相关资源
    最近更新 更多