Non riesco a utilizzare il periodema di Joda Time. Voglio uno per segnalare giorni, ore, minuti e secondi, ma il mio tentativo sembra essere in giro settimane. Cosa dovrei fare in modo diverso?My PeriodFormatter non si comporta come mi aspetto - cosa ho fatto di sbagliato?
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: Credo di poter capire perché questo non sta funzionando - vale a dire che il formattatore si limita a stampare diversi valori del periodo, e poiché periodi memorizzare un valore per settimane, il valore per giorni e giorni il mio problema periodo è effettivamente 0. Ma ho ancora bisogno di un buon modo per farlo ...
Ti mancava un separatore per le settimane - aggiunto. – ripper234