Joda Time analyser une date avec le fuseau horaire et de retenir que le fuseau horaire

Je veux analyser une date, qui a été créé avec un fuseau horaire, la convertir en un format et de le retourner. La conversion fonctionne, mais le décalage horaire est toujours réglé à +0000 avec la différence de temps d'être ajoutés ou soustraits en tant que de besoin. Comment puis-je obtenir de format et de garder le décalage correct?

Je m'attends à ce: 2012-11-30T12:08:56.23+07:00

Mais voilà: 2012-11-30T05:08:56.23+00:00

Mise en œuvre:

public static final String ISO_8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSZZ";

public static String formatDateToISO8601Standard(Date date) {
    DateTime dateTime = new DateTime(date);
    DateTimeFormatter df = DateTimeFormat.forPattern(ISO_8601_DATE_FORMAT);
    return dateTime.toString(df);
}

De la classe de Test:

private static final String DATE_WITH_TIMEZONE = "30 11 2012 12:08:56.235 +0700";
private static final String EXPECTED_DATE_WITH_TIMEZONE = "2012-11-30T12:08:56.23+07:00";

@Test public void testFormattingDateWithSpecificTimezone() throws Exception {
    String result = JodaDateUtil.formatDateToISO8601Standard(createDate(DATE_WITH_TIMEZONE));
    assertEquals("The date was not converted correctly", EXPECTED_DATE_WITH_TIMEZONE, result); }

private Date createDate(String dateToParse) throws ParseException {
    DateTimeFormatter df = DateTimeFormat.forPattern("dd MM yyyy HH:mm:ss.SSS Z");
    DateTime temp = df.parseDateTime(dateToParse);
    Date date = temp.toDate();
    return date; }
InformationsquelleAutor edwardmlyte | 2013-05-28