Dúvida com JODA-TIME

Boa tarde pessoal!

Comecei hoje a usar o JODA-TIME 1.5 para calcular o tempo que durou um determinado evento entre duas datas e o código é o seguinte:

public class TesteData {
	public static void main(String[] args) {
		DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
		DateTime end = new DateTime(2005, 1, 1, 0, 0, 0, 0);

		// duration in ms between two instants
		Duration dur = new Duration(start, end);
				
		System.out.println(dur.getMillis());
		
		Date data = new Date(dur.getMillis());
		String d = new SimpleDateFormat("d hh:mm:ss").format(data);
		System.out.println(d);
	}
}

Ele calcula o tempo em dias certo (7 dias) porém as horas deveriam vir como 0, afinal foram 7 dias exatos, mas ele ta imprimindo as horas como 09:00:00.

Alguem sabe o pq da diferença de 9hs?

abraco!

Não misture Joda Time com SimpleDateFormat. No seu caso você precisa converter seu Duration em um Period, e usar a classe PeriodFormat e PeriodFormatter.

import org.joda.time.*;
import org.joda.time.format.*;

class TesteJodaTime {
    public static void main(String[] args) {
	DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
	DateTime end = new DateTime(2005, 1, 1, 0, 0, 0, 0);
        Period per = new Period (start, end);
        // Isto imprime "1 week"
        System.out.println (PeriodFormat.getDefault().print (per));
        // Isto imprime "1 semana, 0 dias, 00:00:00"
        PeriodFormatter pf = new PeriodFormatterBuilder()
            .printZeroAlways()
            .appendWeeks() 
            .appendSuffix (" semana, ", "semanas, ")
            .appendDays()
            .appendSuffix (" dia, ", " dias, ")
            .minimumPrintedDigits(2)
            .appendHours()
            .appendSeparator(":")
            .appendMinutes()
            .appendSeparator(":")
            .appendSeconds()
            .toFormatter();
        System.out.println (pf.print (per));
    }
}