Tengo problemas para usar PeriodFormatter de Joda Time. Quiero que informe los días, las horas, los minutos y los segundos, pero mi intento parece estar cerrando semanas. ¿Qué debería estar haciendo diferente?My PeriodFormatter no se está comportando como esperaba, ¿qué he hecho mal?
import org.joda.time.DateTime;
import org.joda.time.Period;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;
public class Problems {
public static void main(String[] args) {
PeriodFormatter formatter = new PeriodFormatterBuilder()
.printZeroNever()
.appendDays()
.appendSuffix(" day", " days")
.appendSeparator(", ")
.appendHours()
.appendSuffix(" hour", " hours")
.appendSeparator(", ")
.appendMinutes()
.appendSuffix(" minute", " minutes")
.appendSeparator(", ")
.appendSeconds()
.appendSuffix(" second", " seconds")
.toFormatter();
DateTime now = new DateTime();
DateTime justUnderAWeekAgo = now.minusDays(7).plusMinutes(1);
DateTime justOverAWeekAgo = now.minusDays(7).minusMinutes(1);
System.out.println(now);
System.out.println(justUnderAWeekAgo);
System.out.println(justOverAWeekAgo);
// I am happy with the following:
System.out.println(
formatter.print(new Period(justUnderAWeekAgo, now)));
// But not with this (outputs "1 minute" but I want "7 days, 1 minute"):
System.out.println(
formatter.print(new Period(justOverAWeekAgo, now)));
}
}
EDIT: supongo que puedo ver por qué esto no está funcionando - es decir, que el formateador sólo imprime diversos valores de la época, y desde Períodos almacenar un valor de semanas, el valor para el día de mi problema el período es de hecho 0. Pero todavía necesito una buena forma de hacerlo ...
Falta un separador para las semanas - agregado. – ripper234