Нахождение начала и конца года / месяца / дня / часа - PullRequest
1 голос
/ 22 марта 2010

Я использую следующий фрагмент, чтобы найти начало и конец нескольких периодов времени в Джоде. Маленький дьявол на моем левом плече говорит, что это путь ... но я ему не верю.

Может ли кто-нибудь, имеющий некоторый опыт йоги, взглянуть на меня и сказать, что маленький парень прав?

(будет использоваться только для объектов даты и времени UTC)

Спасибо!

/* Year */
private static DateTime endOfYear(DateTime dateTime) {
    return endOfDay(dateTime).withMonthOfYear(12).withDayOfMonth(31);
}

private static DateTime beginningOfYear(DateTime dateTime) {
    return beginningOfMonth(dateTime).withMonthOfYear(1);
}

/* Month */
private static DateTime endOfMonth(DateTime dateTime) {
    return endOfDay(dateTime).withDayOfMonth(dateTime.dayOfMonth().getMaximumValue());
}

private static DateTime beginningOfMonth(DateTime dateTime) {
    return beginningOfday(dateTime).withDayOfMonth(1);
}

/* Day */
private static DateTime endOfDay(DateTime dateTime) {
    return endOfHour(dateTime).withHourOfDay(23);
}

private static DateTime beginningOfday(DateTime dateTime) {
    return beginningOfHour(dateTime).withHourOfDay(0);
}

/* Hour */
private static DateTime beginningOfHour(DateTime dateTime) {
    return dateTime.withMillisOfSecond(0).withSecondOfMinute(0).withMinuteOfHour(0);
}

private static DateTime endOfHour(DateTime dateTime) {
    return dateTime.withMillisOfSecond(999).withSecondOfMinute(59).withMinuteOfHour(59);
}

Ответы [ 2 ]

1 голос
/ 23 марта 2010

Joda предоставляет DateMidnight и LocalDate, которые могут избавить вас от необходимости работать с часами и минутами в тех случаях, когда вы действительно заботитесь только о дневных границах. LocalDate также реализует интерфейс ReadablePartial, и, возможно, стоит взглянуть на создание других реализаций того, что отражает области интереса.

0 голосов
/ 23 марта 2010

Я знаю, что библиотеки java основаны на 0 (т. Е. Январь равен 0, декабрь - 11). Я не думаю, что Джода, но если вы не уверены, проверьте это дважды.

...