计算相对于时区的正确时间,没有夏令时

时间:2017-11-27 10:00:09

标签: java jodatime dst

目前,我使用方法计算时区的时间,如下所示

DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss-HH:mm").withZone(DateTimeZone.forID("America/Denver"));

DateTime f = fmt.parseDateTime("2014-09-20T20:00:33+07:00");

但它也会考虑夏令时来计算时间 所以,任何人都有任何方法/解决方法来计算时间而不考虑DST。(即我不想在我计算的时间内添加DST)。

1 个答案:

答案 0 :(得分:1)

我仍然想知道你为什么要计算当地的标准时间,这与恕我直言没有实际意义相关但是好的,你走了:

DateTimeZone dtz = DateTimeZone.forID("America/Denver");
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ").withZone(dtz);

DateTime f = fmt.parseDateTime("2014-09-20T20:00:33+07:00");
System.out.println("JODA-DT=" + f); // 2014-09-20T07:00:33.000-06:00
System.out.println("STD-OFFSET=" + dtz.getStandardOffset(f.getMillis()) / 3600000); // -7
f = f.withZone(DateTimeZone.forOffsetMillis(dtz.getStandardOffset(f.getMillis())));
System.out.println("Standard-time=" + f); // 2014-09-20T06:00:33.000-07:00

注意:我首先纠正了错误的格式模式。