根据没有夏令时的时区计算正确的时间
Calculate the correct time with respect to time zone without daylight saving time
目前,我使用方法来计算相对于时区的时间,如下
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");
但它也会考虑帐户中的夏令时来计算时间。
所以,任何人都有 method/workaround 计算时间而不考虑 DST。(即我不想在我计算的时间中添加 DST)。
我仍然想知道你为什么要计算本地标准时间,恕我直言,这与实际无关,但是好吧,你开始吧:
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
注意:我已经更正了你错误的格式模式。
目前,我使用方法来计算相对于时区的时间,如下
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");
但它也会考虑帐户中的夏令时来计算时间。
所以,任何人都有 method/workaround 计算时间而不考虑 DST。(即我不想在我计算的时间中添加 DST)。
我仍然想知道你为什么要计算本地标准时间,恕我直言,这与实际无关,但是好吧,你开始吧:
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
注意:我已经更正了你错误的格式模式。