Как проверка, если сегодня воскресенье с Календарем Java

Я записал немного строк кода, который не работает правильно. Почему? Сурьма могла объяснить меня?

    Calendar date = Calendar.getInstance();

    date.set(2010, 03, 7);

    if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
        System.out.println("OK");
6
задан Kamil 7 March 2010 в 12:55
поделиться

6 ответов

Чтобы избежать ошибок, вы можете использовать для месяца статические значения Calendar, например, :

date.set(2010, Calendar.MARCH, 7);
12
ответ дан 8 December 2019 в 02:29
поделиться

Месяцы отсчитываются от нуля:

date.set(2010, 2, 7);

Также не входите в привычку писать числа с нулями в начале. Это говорит Java (и многим другим языкам), что вы хотите, чтобы число интерпретировалось как восьмеричная (с основанием 8) константа, а не как десятичная.

9
ответ дан 8 December 2019 в 02:29
поделиться

Потому что 7 апреля 2010 года - не воскресенье. Месяцы начинаются с нуля: 0 = январь, 1 = февраль, 2 = март, ...

(Также, побочное замечание, вы использовали восьмеричную систему счисления при указании месяца [03 вместо 3]. Ничего страшного, пока вы не перейдете к сентябрю, после чего 08 будет недопустимым восьмеричным числом.)

.
5
ответ дан 8 December 2019 в 02:29
поделиться

Значение месяца отсчитывается от нуля. Документация Java для метода set класса Calendar .

Также, если вы хотите проверить, является ли сегодня (день запуска программы :)) воскресенье, вам не нужно ничего устанавливать, потому что метод getInstance возвращает объект Calendar на основе текущего времени в часовой пояс по умолчанию с локалью по умолчанию:

Calendar date = Calendar.getInstance();    
//date.set(2010, 03, 7);    
if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
    System.out.println("OK");
3
ответ дан 8 December 2019 в 02:29
поделиться

Вероятно, потому что месяц отсчитывается от нуля, поэтому вы устанавливаете 7 апреля, то есть среду.

3
ответ дан 8 December 2019 в 02:29
поделиться

Это для Эйлера 19?

Если да, то вот подсказка, цикл с 1901 по 2000 год, с 0 по 11 месяц, с 1–31 дня, затем спросите:

if(date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY  && day==1)
     counter++;
4
ответ дан 8 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: