Установщик календаря не принимает мои изменения - PullRequest
0 голосов
/ 29 апреля 2020

Установщик календаря не принимает мои изменения. DAY_OF_WEEK остается тем же после того, как установщик. У кого-нибудь есть идея?

Calendar firstDayOfTheWeek = Calendar.getInstance();
Calendar lastDayOfTheWeek = Calendar.getInstance();

firstDayOfTheWeek.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
lastDayOfTheWeek.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);

Если я отлаживаю 2 календаря после, даты совпадают

1 Ответ

0 голосов
/ 29 апреля 2020

java .time

Я рекомендую использовать java .time, современную Java дату и время, для вашей даты работы.

    LocalDate today = LocalDate.now(ZoneId.systemDefault());

    LocalDate firstDayOfTheWeek = today.with(DayOfWeek.MONDAY);
    LocalDate lastDayOfTheWeek = today.with(DayOfWeek.SUNDAY);

    System.out.println("The week is from " + firstDayOfTheWeek + " through " + lastDayOfTheWeek);

Когда я запустить код сегодня, вывод:

Неделя с 2020-04-27 по 2020-05-03

Что пошло не так в вашем коде?

Вы использовали класс Calendar 1990-х годов. Этот класс плохо спроектирован и, к счастью, давно устарел. Одна из многих запутанных черт заключается в том, что он не устанавливает поля сразу, когда вы устанавливаете поле. Как сказано в документации:

Любые значения полей, установленные в Calendar, не будут интерпретироваться до тех пор, пока не потребуется рассчитать его значение времени (миллисекунды из эпохи) или значения полей календаря. Вызов get, getTimeInMillis, getTime, add и roll включает такие вычисления.

Так что, если вы установите одно или несколько полей и посмотрите на Calendar в Отладчик или распечатайте его, используя toString(), вы увидите промежуточное состояние, в котором он еще не определил значения своего поля, поэтому значения, которые вы видите, могут быть непоследовательными и не такими, как ожидалось.

Ссылка

Oracle учебник: Дата и время объяснение, как использовать java .time.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...