我在Joda時間有時區偏移問題。我認爲這只是一個理解的問題。Joda時間和時區偏移量
我有以下的解析器和打印機:
// The formatter for the timezone
DateTimeFormatter timezoneFormatter = new DateTimeFormatterBuilder().appendTimeZoneOffset(null, true, 2, 2)
.toFormatter();
// This formatter equals: yyyy-MM-dd
DateTimeFormatter dhmsFormatter = ISODateTimeFormat.date();
// Here a parser is created that parses a string of the form yyyy-MM-dd. Further the string may have
// a timezone. withOffsetParsed makes the parser to respect the set timezone (if one is set)
DATE_TIME_PARSER = new DateTimeFormatterBuilder().append(dhmsFormatter)
.appendOptional(timezoneFormatter.getParser()).toFormatter().withOffsetParsed();
// Here a printer is created that prints this dateTime in the form yyyy-MM-dd ZZ
DATE_TIME_PRINTER = new DateTimeFormatterBuilder().append(dhmsFormatter).append(timezoneFormatter.getPrinter()).toFormatter();
此,當我分析,並有偏移集打印日期預期工作。例如爲:
- 2006-11-11-09:00
- 2004-12-01 + 00:00
這兩個值被解析並打印,因爲它們是上述在這裏寫。
現在我的問題: 我想能夠設置一個默認時區(即默認偏移量,當沒有設置)。 我是這樣做的:現在 DateTimeZone.setDefault(DateTimeZone.forID("Etc/GMT+1"));
我的期望是,2006-11-11
被解析並打印2006-11-11+01:00
,但實際上它打印2006-11-11-01:00
。
我認爲這是正確的,因爲在這裏http://www.joda.org/joda-time/timezones.html寫道Etc/GMT + 1的標準偏移量爲-01:00。 那又怎麼了? 我想抵消以反映GMT偏移量。 我也認爲我上面的值是錯誤的:意思2006-11-11-09:00
不是「日本」的時區,但它是「美國/阿拉斯加」的時區。
我希望我的問題很清楚。 有沒有人有我的不理解的答案:)?
最好的問候, 弗洛裏安
沒有這樣做是正確的。我的問題是,對於偏移量來說,有些事情是奇怪的(對我來說)。 GMT + 1的偏移量爲-01:00。但我的偏移量應該是+01:00。 –
哦,那麼這可能是你的問題的(不完整)答案:http://answers.yahoo.com/question/index?qid=20090707145844AANnghH –