Joda-Time, l'Heure d'été changement de date et de temps d'analyse

J'ai le problème suivant à l'aide de Joda-Time de l'analyse et de la production de la date et de l'heure de autour de L'Heure D'Été (DST) heures. Voici un exemple (s'il vous plaît, notez que le 30 Mars 2008 est l'heure d'été à modifier en Italie):

DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime x = dtf.parseDateTime("30/03/2008 03:00:00");
int h = x.getHourOfDay();
System.out.println(h);
System.out.println(x.toString("dd/MM/yyyy HH:mm:ss"));
DateTime y = x.toDateMidnight().toDateTime().plusHours(h);
System.out.println(y.getHourOfDay());
System.out.println(y.toString("dd/MM/yyyy HH:mm:ss"));

J'obtiens le résultat suivant:

3
30/03/2008 03:00:00
4
30/03/2008 04:00:00

Quand je lis l'heure-je obtenir de l'heure est de 3. Dans ma structure de données I sauver la journée stockage de minuit de temps, puis je avoir une certaine valeur pour chaque heure de la journée (de 0 à 23). Puis, quand j'ai écrit la date, j'ai re-calculer la date de temps à faire de minuit plus l'heure. Quand j'somme de 3 heures pour mon minuit je reçois 04:00:00! Et si je l'analyser à nouveau, je reçois 4 heures!

Où est mon erreur? Est-il un moyen pour obtenir l'heure 2 quand je lis ou obtenir de l'heure trois quand j'imprime?

J'ai aussi essayé à la sortie de la construction à la main:

String.format("%s %02d:00:00", date.toString("dd/MM/yyyy"), h);

mais dans ce cas, pour l'heure 2, je produis 30/03/2008 02:00:00 qui n'est pas une date valide (depuis l'heure 2 n'existe pas) et ne peut être analysée plus.

Je vous remercie d'avance pour votre aide.
Filippo

Pour info, le Joda-Time le projet est maintenant dans entretien, avec l'équipe conseiller de migration de la java.de temps les classes. Voir Tutoriel Oracle.

OriginalL'auteur Filippo Tabusso | 2010-10-23