Мне нужно рассчитать день недели ISO для конкретной даты.В настоящее время у меня есть функции, которые вычисляют порядковый день, а также функцию, которая вычисляет день 1 января каждого года, однако теперь мне нужна функция, которая будет вычислять день недели ISO для любой даты.
Я должен сделать это с помощью порядкового дня, дня недели и арифметики по модулю 7, но я не совсем уверен, как это сделать, например, для даты пятница 26 сентября 2008 года, моего порядкового дня.должно быть 270 (что это), и мой номер дня недели должен быть 5 (пятница), что это не так.Я думаю, что я должен объединить два с арифметикой по модулю 7, но я не совсем уверен, как.
Я пытался сделать 270% 7, который дал мне ответ 4, но это должно быть 5.Я не совсем уверен, как я должен соединить два значения (если мне даже нужно)
Мой код для двух функций:
int day_of_the_week(int year)
{
int week_day;
week_day = ((1 + 5 * ((year - 1) % 4) + 4 * ((year - 1) % 100) + 6 * ((year
- 1) % 400) ) % 7);
if (week_day == 0) {
week_day = 7;
}
return 0;
}
int calculate_ordinal_day(int day, int month, int year, int isyearleap) {
int ordinal_day;
if (month == 1) {
return day;
}
if (month == 2) {
return day + 31;
}
ordinal_day = myFloor(30.6 * month - 91.4) + day;
if (isyearleap == 1) {
return ordinal_day + 60;
}
return ordinal_day + 59;
}