2011-08-06 3 views
0

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은 "일본"의 시간대가 아니지만 "미국/알래스카"의 시간대입니다.

제 문제가 분명해졌습니다. 아무도 내 이해하지 못하는 것에 대한 해답을 갖고 있지 않습니까? 당신이 기본 시간대를 설정하기 전에 DateTimeFormatter 또는 DateTime를 인스턴스화하는 것을

안부, 플로리안

답변

1

그것은 될 수 있을까?

어쨌든 withZone() 메서드는 사용자가 찾고있는 포맷터/파서를 제공해야한다고 생각합니다.

+0

아니요. 올바르게 이루어지지 않았습니다. 내 문제는 오프셋이있는 뭔가가 이상하다는 것입니다. GMT + 1의 오프셋은 -01 : 00입니다. 하지만 오프셋은 +01 : 00이어야합니다. –

+0

아, 그러면 질문에 대한 (불완전한) 답변 일 것입니다 : http://answers.yahoo.com/question/index?qid=20090707145844AANnghH –

관련 문제