Получить название дня из месяца, года и дня - PullRequest
1 голос
/ 25 октября 2010

Кто-нибудь знает способ преобразования месяца, года и дня в название дня для любого года?Пример:

function convert(day, year, month)
...
return "Monday"
end

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 25 октября 2010

Вы можете использовать следующий метод:

Этот метод использует коды для разных месяцы и годы, чтобы ускорить расчет дня недели. Вы могли бы даже запомнить коды. Мы будем использовать 16 декабря 2482 как пример.

Возьмите последние 2 цифры года. В В нашем примере это 82.

Разделите на 4 и отбросьте остаток. 82/4 = 20, остаток 2, поэтому мы думаем "20".

Добавьте день месяца. В нашем Например, 20 + 16 = 36.

Добавьте значение ключа месяца из следующая таблица Янв фев мар апр апр май Июнь Июль Авг Сентябрь Октябрь Ноябрь 1 4 4 0 2 5 0 3 6 1 4 6

Месяц для нашего примера декабрь, со значением ключа 6. 36 + 6 = 42.

Если ваша дата в январе или феврале високосного года, вычтите 1. Мы используя декабрь, поэтому нам не нужно беспокоиться об этом шаге.

Добавьте код века из следующая таблица (Эти коды предназначены для григорианский календарь Правила немного проще для юлианских дат.) 1700-е 1800-е годы 1900-е годы 2000-е годы 4 2 0 6

Наш примерный год - 2482, а 2400 не в таблице. К счастью, григорианский календарь повторяет каждый четыреста лет. Все что нам нужно сделать это добавить или вычесть 400, пока мы не получим дата, указанная в таблице. 2482 - 400 = 2082, поэтому мы смотрим на таблицу 2000-х годов и получаем код 6. Теперь мы добавьте это к нашему текущему итогу: 42 + 6 = 48.

Добавьте две последние цифры года. 48 + 82 = 130.

Разделите на 7 и возьмите остаток. На этот раз 1 означает воскресенье, 2 означает Понедельник и тд. Остаток от 0 значит суббота.

Как рассчитать день недели

0 голосов
/ 25 октября 2010

Быстрый Google для "день недели от даты алгоритм" обнаружил эта статья в Википедии

Но в зависимости от дат, с которыми вам нужно работать, остерегайтесь странной истории принятия григорианского календаря

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