Joda - удалить секунды, миллисекунды из PeriodFormat.getDefault().print()?

У меня есть такой метод:

public static String getFormattedDateDifference(DateTime startDate, DateTime endDate) {
        Period p = new Period(startDate, endDate);
        return PeriodFormat.getDefault().print(p);
    }

Я хотел бы отрезать секунды и миллисекунды от печати. Как я могу это сделать?


person LuxuryMode    schedule 22.09.2011    source источник
comment
Использовать свой форматтер вместо стандартного? См. этот вопрос SO для возможного руководства.   -  person Dave Newton    schedule 22.09.2011


Ответы (1)


Если вы хотите, чтобы это было только до минут, почему бы просто не указать правильный тип периода для начала?

private static final PeriodType PERIOD_TO_MINUTES = 
     PeriodType.standard().withSecondsRemoved().withMillisRemoved();

public static String getFormattedDateDifference(DateTime startDate,
                                                DateTime endDate) {

    Period p = new Period(startDate, endDate, PERIOD_TO_MINUTES);
    return PeriodFormat.getDefault().print(p);
}

Я ожидаю, что это отформатирует так, как вы хотите.

Обратите внимание, что если они на самом деле предназначены для дат, вам, вероятно, следует использовать PeriodType.yearMonthDay() и указать значения как LocalDate. DateTime следует использовать для значений даты и времени, а не только даты.

person Jon Skeet    schedule 22.09.2011
comment
Ух ты. Просто изучаю Joda в первый раз после того, как на собственном опыте испытал ужасы Java Calendar API. Джода продолжает меня удивлять. Большое спасибо! - person LuxuryMode; 22.09.2011
comment
@LuxuryMode: Да, Joda Time намного приятнее :) - person Jon Skeet; 22.09.2011