Получить день (недели) специальной даты Java?

У меня есть григорианская дата, и я хочу получить ее день недели. Я попробовал это, но получил неправильный ответ:

Calendar calendar = new GregorianCalendar();

calendar.set(myYear, myMonth, myDay);

int result = calendar.get(Calendar.DAY_OF_WEEK);
switch (result) {
case Calendar.SUNDAY:
    Log.i("DayOfWeek", "SUN");
    break;

.
.
.

default:
    startDay = 0;
    break;
} 

Что проблема?


person Mohammad H    schedule 26.04.2015    source источник
comment
Вы использовали месяц от 0..11 (правильно) или 1..12 (неправильно)?   -  person Maarten Bodewes    schedule 26.04.2015
comment
Как говорит @MaartenBodewes, месяц по какой-то странной причине нулевой индекс. Я запустил ваш код с нулевым индексированным месяцем, и он работает.   -  person Robert Bain    schedule 26.04.2015
comment
Если вы говорите, что получили неправильный ответ, вы должны объяснить, какой ответ является правильным и что вы получили   -  person michaldo    schedule 26.04.2015
comment
@MaartenBodewes Спасибо, это правильно   -  person Mohammad H    schedule 26.04.2015
comment
К вашему сведению, ужасно неприятные старые классы даты и времени, такие как java.util.Date, java.util.Calendar / GregorianCalendar и java.text.SimpleDateFormat теперь являются устаревшими, замененными java.time классы, встроенные в Java 8 и позже. См. учебник от Oracle.   -  person Basil Bourque    schedule 22.07.2018


Ответы (1)


Наконец-то я нашел проблему! Приведенный выше код правильный, но вы должны передать стандартное значение месяца (0 ... 11) вместо (1 ... 12):

Calendar calendar = new GregorianCalendar();

calendar.set(myYear, myMonth-1, myDay);

int result = calendar.get(Calendar.DAY_OF_WEEK);
switch (result) {
case Calendar.SUNDAY:
    Log.i("DayOfWeek", "SUN");
    break;

.
.
.

default:
    startDay = 0;
    break;
}
person Mohammad H    schedule 26.04.2015
comment
Рад, что у вас все заработало, но я закрываю это как обман. Эта ловушка собирала ничего не подозревающих программистов с момента своего появления - помню, когда-то давно мне тоже нужно было найти свое альпинистское снаряжение... :) - person Maarten Bodewes; 26.04.2015
comment
PS используйте новый API даты/времени (начиная с Java 8). - person Maarten Bodewes; 26.04.2015
comment
@MaartenBodewes Хотите, чтобы я удалил этот пост? Есть ли проблема с удалением сообщений? - person Mohammad H; 23.05.2017
comment
Нет, проблемы нет, но и прямой необходимости тоже нет. За него проголосовали, так что кому-то понравилось. Может быть, у него есть какие-то ключевые слова, которые подхватывает Google, кто знает. Просто оставьте его как указатель на ранее заданный вопрос. Возможно, вам придется удалить ответ перед вопросом, если вы пойдете по этому пути. - person Maarten Bodewes; 23.05.2017