【发布时间】:2013-01-14 04:28:39
【问题描述】:
我的日期格式为 2013 年 1 月 8 日、2012 年 8 月 8 日等,它们有自己的特定时区。例如,2013 年 1 月 20 日的时区 ID 可能是澳大利亚/墨尔本,而 08Aug2012 的时区 ID 可能是欧洲/伦敦。我想要做的是,根据这些时区和日期,计算给定日期该时区的 UTC 偏移量。到目前为止,我已经想出了这个:
DateTimeFormatter dtf = DateTimeFormat.forPattern("ZZ");
DateTimeFormatter dtf1 = DateTimeFormat.forPattern("ddMMMYYYY");
DateTimeZone zone = DateTimeZone.forID("Australia/Melbourne");
DateTime thisDate = dtf1.parseDateTime("30Jul2013");
System.out.println("\nZone: " + thisDate.withZone(zone));
这给了我输出:
Zone: 2013-07-30T00:00:00.000+10:00
这是正确的,但我想从中提取 UTC 偏移量,在本例中为 +10:00。我一直在寻找方法来做到这一点,但找不到任何东西。有什么办法可以做到这一点吗?我看到的唯一选择是将输出转换为字符串并使用子字符串方法获取 UTC 偏移量。
上面的代码确实考虑了 DST(夏令时)。例如,如果我有: 日期时间 thisDate = dtf1.parseDateTime("30Jan2013");
输出将是:2013-01-30T00:00:00.000+11:00
(最后是+11:00,而不是+10:00)
所以基本上我需要做的就是找到一种方法从 2013-07-30T00:00:00.000+11:00 中提取 +11:00。请帮忙!
【问题讨论】:
-
您需要时间和日期来确定与 UTC 的偏移量。例如,在美国的 DST 转换日,当偏移量在凌晨 2 点跳跃一小时时,凌晨 1 点的偏移量与凌晨 4 点的偏移量不同。一个日期,两个偏移量。
标签: java timezone jodatime utc