Joda-Time欧洲/柏林的日期时间夏令时

son*_*nix 0 java timezone scala jodatime datetime-format

如何使用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")
Run Code Online (Sandbox Code Playgroud)

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

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

Bas*_*que 5

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

根据时区"欧洲/柏林"的TimeZoneConverter.com的这个页面,夏令时(DST)于2014年3月30日上午02:00:00开始,当地时钟向前设置1小时.根据维基百科的时区名称列表,这意味着柏林从提前一小时(+01:00)转变为提前两小时(+02:00).