Подтвердить что ты не робот

Получите первый день определенной недели в Joda-Time? Ява

В Joda-Time есть способ получить дату первого дня недели (понедельника).

Например, я хочу узнать, какая дата была в эти недели в понедельник на основе сегодняшней текущей даты 21/01/11

Приветствия заранее.

edit: я также хочу найти дату окончания недели в воскресенье. приветствия

4b9b3361

Ответ 1

Попробуйте LocalDate.withDayOfWeek:

LocalDate now = new LocalDate();
System.out.println(now.withDayOfWeek(DateTimeConstants.MONDAY)); //prints 2011-01-17
System.out.println(now.withDayOfWeek(DateTimeConstants.SUNDAY)); //prints 2011-01-23

Ответ 2

LocalDate today = new LocalDate();
LocalDate weekStart = today.dayOfWeek().withMinimumValue();
LocalDate weekEnd = today.dayOfWeek().withMaximumValue();

Дает вам первый и последний дни, в понедельник и воскресенье

Ответ 3

Другой вариант - использовать roundFloorCopy. Это выглядит следующим образом:

LocalDate startOfWeek = new LocalDate().weekOfWeekyear().roundFloorCopy();

В последний день стандартной недели (воскресенье) используйте roundCeilingCopy и minusDays...

LocalDate lastDateOfWeek = new LocalDate().weekOfWeekyear().roundCeilingCopy().minusDays( 1 );

Также работает для DateTime. И работает на конец недели (эксклюзивно).

DateTime dateTime = new DateTime();
DateTime startOfWeek = dateTime.weekOfWeekyear().roundFloorCopy();
DateTime endOfWeek = dateTime.weekOfWeekyear().roundCeilingCopy();

Дамп для консоли...

System.out.println( "dateTime " + dateTime );
System.out.println( "startOfWeek " + startOfWeek );
System.out.println( "endOfWeek " + endOfWeek );

При запуске...

dateTime 2014-01-24T00:00:34.955-08:00
startOfWeek 2014-01-20T00:00:00.000-08:00
endOfWeek 2014-01-27T00:00:00.000-08:00

Ответ 4

Вы можете использовать метод getDayOfWeek(), который возвращает вам 1 на понедельник, 2 на Tue,.., 7 на воскресенье по порядку вернуться к этому много дней и дойти до понедельника:

import org.joda.time.DateTime;

    public class JodaTest {

        public static void main(String[] args) {
            DateTime date = new DateTime();
            System.out.println(date);
                    //2011-01-21T15:06:18.713Z
            System.out.println(date.minusDays(date.getDayOfWeek()-1));
                    //2011-01-17T15:06:18.713Z
        }
    }

Ответ 5

См. раздел "Запросить DateTimes" руководства пользователя Joda-Time.

Ниже приведен общий алгоритм:

  • найдите день недели заданной даты (21 января 2011 года, как вы упомянули)
  • определить, сколько дней до понедельника это означает
  • Вычтите значение # 2 с целевой даты, используя dateTime.minusDays(n)