Какие годы високосные в 21 веке. Почему год назвали високосным и зачем нужен дополнительный день раз в четыре года
Надеюсь, вы отлично встретили новый год, и сейчас у вас отличное праздничное настроение. По крайней мере у меня это именно так - мы не пили никакого алкоголя, и чокнулись в полночь бокалами с водой из пятилитровой канистры, поэтому мы проснулись, погуляли, и тут я вспомнил одно из вчерашних поздравлений с Новым годом:
Желаю, чтобы в конце каждого года ты, вспоминая то, что было за последние 366 if ((year%4 == 0 and year%100 != 0) or (year%400 == 0)) else 365 дней, думал про себя:Ох, нифига себе, какой был экшен. Обязательно буду рассказывать внукам или напишу об этом потом книгу.
Итак, выше достаточно простой inline-способ определить количество дней в году (переменная year), который, по сути, полностью раскрывает их суть: в григорианском календаре високосными годами считаются те годы, порядковый номер которых либо кратен 4, но при этом не кратен 100, либо кратен 400. Иными словами, если год делится на 4 без остатка, но делится на 100 только с остатком, то он високосный, иначе - невисокосный, кроме случая, если он делится без остатка на 400 - тогда он всё равно високосный.
Например, 2013 год невисокосный, 1700, 1800 и 1900 - опять же невисокосные годы, а вот 2000, 2004, 2008 и 2012 - високосные.
Но что, если мы не помним, сколько дней в високосных (366 дней) и невисокосных (365 дней) годах, или просто хотим написать определение количества дней в году максимально быстро? Можно ли сделать так на Python? Конечно же, можно.
Итак, в Python есть модуль calendar . Он как раз отлично подходит для того, чтобы узнать, является ли тот или иной год високосным (или, например, сколько високосных годов в определённом интервале), определить количество дней в месяце, получить номер дня недели для определённой даты и так далее.
В частности, мы можем получить количество дней в каждом месяце года, и просто сложить.
Функция calendar.monthrange принимает номер года в качестве первого аргумента и номер месяца в качестве второго аргумента. Возвращает номер дня недели первого числа данного месяца и количество дней в данном месяце:
>>> import calendar
>>> calendar.monthrange(2013, 1)
(1, 31)
Соответственно, мы можем подсчитать общее количество дней для всех 12 месяцев, и получить таким образом количество дней для данного года:
>>> import calendar
>>> year = 2013
>>> sum(map(lambda x: calendar.monthrange(year, x), range(1, 13)))
365
Но если подумать о том, как именно выполняется эта строка, становится очевидно, что это решение очень неэффективно, если нужно посчитать количество дней для большого количества годов.
Проверяем с помощью модуля timeit .
На то, чтобы выполнить её 1 миллион раз, требуется 13.69 секунд, если import calendar делается один раз в начале. Если import calendar делается каждый раз, тогда 14.49 секунд.
Теперь попробуем другой вариант. Он требует знания того, сколько дней в високосных и невисокосных годах, но зато он очень короткий:
>>> import calendar
>>> year = 2013
>>> 365+calendar.isleap(year)
365
И, как легко догадаться, он уже намного быстрее: 0.83
секунд, включая import calendar, и 0.26
секунд, если import calendar делается один раз в начале.
Давайте также посмотрим, сколько требуется времени самому первому варианту, с «ручным» подходом: 0.07 секунд для 2012 и 2013 и 0.12 секунд для 2000 (думаю, всем понятно, откуда берётся такая разница в скорости для этих годов).
Получается, что это и есть самый быстрый вариант из этих трёх:
>>> import calendar
>>> year = 2013
>>> 366 if ((year%4 == 0 and year%100 != 0) or (year%400 == 0)) else 365
365
Конечно, в большинстве случаев вы можете использовать любой из этих вариантов - в конце концов, при определении количества дней в одном, двух, десяти или ста годах вы вряд ли почувствуете какую-либо разницу.
Пишите, оптимизируйте, улучшайте, тестируйте и считайте производительность - но не забывайте о читаемости исходников ваших программ.
С Новым годом! Удачи, счастья, радости и самосовершенствования в новом году.
sharky:
25.03.2013 в 16:04
а с какого перепугу 1900 не является високосным? Високосный год наступает каждые 4 года, т.е. если на 4 делится - это високосный год. И больше не надо никаких делений на 100 или 400.
Вопросы задавать это нормально, а вот прежде чем утверждать что-то изучите матчасть. Земля делает оборот вокруг солнца за 365 суток 5 часов 48 минут 46 секунд. Как видите остаток не ровно 6 часов, а на 11 минут 14 секунд меньше. Это значит, что делая високосный год мы прибавляем лишнее время. Где-то за 128 лет накапливаются лишние сутки. Поэтому каждые 128 лет в одном из 4-х летних циклов високосный год делать не надо, чтобы избавиться от этих лишних суток. Но чтобы упростить, високосным не делают каждый 100-й год. Идея понятна? Хорошо. А как же тогда быть дальше, ведь лишний день прибавляется каждые 128 лет, а урезаем его каждые 100 лет? Да, мы отрезаем больше положенного, и это нужно когда-то вернуть.
Если первый абзац понятен и все еще интересно, тогда читаем дальше, но будет сложнее.
Итак за 100 лет набегает 100/128=25/32 суток лишнего времени (это 18 часов 45 минут). Мы не делаем високосный год, то есть отнимаем одни сутки: получаем 25/32-32/32=-7/32 суток (это 5 часов 15 минут), то есть отнимаем лишнее. Через четыре цикла по 100 лет (через 400 лет) мы отнимем лишнего 4*(-7/32)=-28/32 суток (это минус 21 час). На 400-й год мы делаем високосный год, то есть прибавляем сутки (24 часа): -28/32+32/32=4/32=1/8 (это 3 часа).
Мы делаем каждый 4 год високосным, но при этом каждый 100 год не високосным и при этом каждый 400 год високосным, но все равно каждые 400 лет прибавляются лишние 3 часа. Через 8 циклов по 400 лет, то есть через 3200 лет накопится лишних 24 часа, то есть одни сутки. Тогда добавляется еще одно обязательное условие: каждые 3200-й год не должен быть високосным. 3200 лет можно округлить до 4000, но тогда опять придется играться с добавленными или урезанными сутками.
3200 лет не прошло, так что об этом условии, если его таким сделают, еще не говорят. А вот 400 со дня утверждения Григорианского календаря лет уже прошло.
Года кратные 400 всегда високосные (пока что на сегодняшний день), остальные года кратные 100 не високосные, остальные года кратные 4 високосные.
Приведенный мною расчет показывает что при нынешнем состоянии ошибка в одни сутки накопиться за 3200 лет, но вот что об этом пишет википедия:
«Ошибка в одни сутки по сравнению с годом равноденствий в григорианском календаре накопится примерно за 10 000 лет (в юлианском - примерно за 128 лет). Часто встречающаяся оценка, приводящая к величине порядка 3000 лет, получается, если не учитывать, что со временем изменяется количество суток в тропическом году и, кроме того, изменяется соотношение между продолжительностями времён года». Из той же википедии формула продолжительности года в сутках с дробями неплохо обрисовывает картину:
365,2425=365+0,25-0,01+0,0025=265+1/4-1/100+1/400
Год 1900 високосным не был, а 2000 был, причем особенный, потому что такой високосный бывает раз в 400 лет.
2018 год будет невисокосным , потому как дополнительный 366 день, 29 февраля, добавляется только раз в четыре года. Предыдущий високосный год был 2016, а значит следующий будет только в 2020 году.
Все високосные годы приведены в таблице ниже:
Сколько дней в 2018 году
Вопрос о том, сколько дней будет в 2018 году 365 или 366 интересует многих. От количества дней в году зависят нормы рабочего времени, расчет процентов по кредитам и депозитам, начисление зарплат и многое другое. Так как год будет невисокосным, значит продолжительность 2018 года составит 365 дней .
Кроме того 2018 високосный год или нет интересует людей, склонных верить в суеверия и народные приметы. Ведь народная мудрость утверждает, что високосный год несет в себе трагедии, болезни, большие и мелкие неурядицы.
Так, к примеру:
- 29 февраля, так называемый Касьянов день, самый плохой день для рождения младенца. Мало того, что рожденному в этот несчастливый день предрекают такую же несчастливую судьбу, так еще и праздновать свой день рождения он может всего один раз в четыре года!
- Крайне плохой приметой считается играть свадьбу в високосный год. В народе говорят, что такая семья не будет долго жить вместе. скорому распаду семьи, изменам и несчастьям, вплоть до смерти супругов.
- Если ребенок родился в високосный год, надо как можно быстрей провести обряд крещения. При этом крестными должны быть кровные родственники.
2018 - год вдовы или вдовца
Еще одна народная примета утверждает, что год следующий за високосным будет годом вдовы, а за годом вдовы следует год вдовца. Так как високосный год был 2016, то 2018 - год вдовца . То есть согласно суевериям, в парах которые сыграют свадьбу в течении 2018 года мужчина останется вдовцом.
Современные астрологи и экстрасенсы категорически отрицают подобные приметы и настоятельно советуют молодым людям назначать дату свадьбы именно на 2018 год. Ведь согласно китайскому гороскопу наступающий год будет годом Собаки, а это зодиакальное животное является символом домашнего уюта и спокойствия.
Еще одно "утешение" для склонных к суевериям людей: не существует какой-либо статистики, которая могла бы подтвердить факты о годах вдовы или вдовца. Также против подобных предрассудков выступает и православная церковь - главный залог крепкой семьи это взаимная любовь и уважение.
Как узнать какой год будет високосным
Определить високосный год или нет достаточно просто. Можно, к примеру, запомнить, какой последний год был високосным и отсчитывать периоды по четыре года, ведь именно с такой периодичностью и наступает «високосность» - на каждый четвертый год.
Кроме того, если вы не помните когда был високосный год, есть простое правило, по которым можно вычислить сколько дней в году 365 или 366:
если интересующий вас год можно разделить на 4 без остатка, то год високосный и в нем 366 дней. Все остальные годы имеют продолжительность 365 дней и не являются високосными.
Как и в каждом правиле, здесь есть исключение: года с нулями в конце являются високосными, только если они кратны число 400. То есть 2000 год был високосным, а 1900, 1800, 1700 нет.
2016 год является високосным годом, в котором 366 дней вместо обычных 365-ти. Високосный год был предложен, чтобы синхронизировать календари. А знали ли вы, что не каждый 4-й год является високосным? Почему високосный год считается несчастливым, и какие приметы связаны с этим? Вот несколько фактов, которые вы, возможно, не знали о високосном годе.
1. Високосный год – это год, в котором 366 дней, а не 365 как обычно. Дополнительный день в високосном году добавляется в феврале – 29 февраля (високосный день).
Дополнительный день в високосном году необходим потому, что полный оборот вокруг Солнца занимает чуть больше 365 дней, а точнее 365 дней, 5 часов, 48 минут и 46 секунд.
Когда-то люди следовали календарю из 355 дней с дополнительным месяцем из 22 дней каждые два года. Но в 45 г. До н.э. Юлий Цезарь совместно с астрономом Созигеном решил упростить ситуацию, и был разработан юлианский 365-дневный календарь с дополнительным днем каждые 4 года, чтобы компенсировать дополнительные часы.
Этот день был добавлен в феврале, так как когда-то он был последним месяцев в римском календаре.
2. Эта система была дополнена папой Григорием XIII (который ввел григорианский календарь), который ввел термин «високосный год» и объявил что год, кратный 4-м и кратный 400, но не кратный 100, является високосным годом.
Так по григорианскому календарю 2000 год был високосным, а вот 1700, 1800 и 1900 – не были.
Какие года високосные в 20-м и 21-м веке?
1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096
29 февраля — високосный день
3. 29 февраля считается единственным днем, когда женщина может делать предложение о браке мужчине. Эта традиция зародилась в 5-м веке в Ирландии, когда Святая Бригитта пожаловалась Святому Патрику о том, что женщинам приходится слишком долго ждать от поклонников предложения.
Тогда он предоставил женщинам один день в високосном году – последний день в самом коротком месяце, чтобы представительницы прекрасного пола могли сделать предложение мужчине.
Согласно легенде Бригитта тут же встала на колени и сделала предложение Патрику, но он отказался, поцеловав ее в щеку, и предложил ей шелковое платье, чтобы смягчить отказ.
4. По другой версии эта традиция появилась в Шотландии, когда королева Маргарита в возрасте 5-ти лет объявила в 1288 году, что женщина может сделать предложение любому понравившемуся мужчине 29 февраля.
Она также установила правило, что те, кто отказывал, должны были платить штраф в форме поцелуя, шелкового платья, пары перчаток или денег. Чтобы заранее предупредить поклонников, женщине полагалось носить брюки или красную нижнюю юбку в день предложения.
В Дании мужчина, отказывающий женщине в предложении руки и сердца, должен предоставить ей 12 пар перчаток, а в Финляндии – ткань для юбки.
5. Каждая пятая пара в Греции избегает заключения брака в високосный год, так как считается, что это приносит неудачу.
В Италии считается, что в високосный год женщина становится непредсказуемой, и в это время не нужно планировать важных событий. Так, согласно итальянской поговорке » Anno bisesto, anno funesto «. («Високосный год — обреченный год»).
6. Шансы родиться 29 февраля составляют 1 на 1461. Во всем мире около 5 миллионов людей родились в високосный день.
7. Многие века астрологи считали, что дети, рожденные в високосный день, обладают необычными талантами, уникальной личностью и даже особыми силами. Среди известных людей, родившихся 29 февраля, можно назвать поэта Лорда Байрона, композитора Джоакино Россини, актрису Ирину Купченко.
8. В Гонконге официальный день рождения для тех, кто родился 29 февраля, считается 1 марта в обычные года, а в Новой Зеландии – 28 февраля. Если правильно рассчитать время, то, путешествуя из одной страны в другую, можно отпраздновать самый долгий день рождения в мире.
9. Город Энтони в Техасе, США является самопровозглашенной «мировой столицей високосного года». Здесь ежегодно устраивают фестиваль, где собираются желающие со всего мира, родившиеся 29 февраля.
10. Рекорд наибольшего числа поколений, родившихся в високосный день, принадлежит семье Кео (Keogh).
Питер Энтони Кео (Peter Anthony Keogh) родился 29 февраля 1940 года в Ирландии, его сын Питер Эрик (Peter Eric) родился 29 февраля 1964 года в Великобритании, а внучка Бетани Уэлс (Bethany Wealth) – 29 февраля в 1996 году.
11. Карин Хенриксен (Karin Henriksen) из Норвегии принадлежит мировой рекорд рождения наибольшего числа детей в високосный день.
Ее дочь Хайди (Heidi) родилась 29 февраля 1960 года, сын Олав (Olav) 29 февраля в 1964 и сын Лиф-Мартин (Lief-Martin) 29 февраля в 1968 году.
12. В традиционном китайском, еврейском и древнеиндийском календаре к году добавляют не високосный день, а целый месяц. Его называют «вставным месяцем». Считается, что детей, рожденных в високосный месяц, сложнее воспитывать. Кроме того, считается неудачным начинать серьезные дела в високосный год.
Издревле високосный год всегда считался сложным и плохим для многих начинаний. В народных поверьях високосный год связан со Святым Касьяном, который считался злым, завистливым, скупым, немилостивым и приносил людям несчастья.
По легенде, Касьян был светлым ангелом, которому Бог доверял все планы и намерения. Но затем он перешел на сторону Дьявола, рассказав тому, что Бог намерен свергнуть с небес всю сатанинскую силу.
За предательство Бог наказал Касьяна, приказав бить его по лбу молотком три года, а на четвертый год отпускать на землю, где он совершал недобрые поступки.
Существует множество примет, связанных с високосным годом:
Во-первых, в високосный год нельзя что-либо начинать. Это касается важных дел, бизнеса, крупных покупок, вложений и строительства.
- Високосный год считается крайне неудачным для заключения брака. С давних времен считалось, что свадьба, сыгранная в високосный год, приведет к несчастливому браку, разводу, изменам, вдовству, или сам брак будет недолговечен.
- Такое суеверие, возможно, связано с тем фактом, что в високосный год девушки могли свататься к любому понравившемуся молодому человеку, который не мог отказать в предложении. Зачастую такие браки были вынужденными, и потому семейная жизнь не задавалась.
- Однако стоит разумно относиться к этим приметам и понимать, что все зависит и от самих супругов и от того, как они построят отношения. Если же вы все же запланировали свадьбу, есть несколько способов смягчить «последствия»:
- Невестам советуют носить длинное платье на свадьбу, прикрывающее колени, чтобы сделать брак долговечным.
- Свадебное платье и другие свадебные аксессуары не рекомендуется кому-либо отдавать.
- Кольцо нужно надевать на руку, а не перчатку, так как ношение кольца на перчатке приведет к тому, что супруги будут легкомысленно относиться к браку
- Чтобы уберечь семью от бед и несчастий, в туфли жениху и невесте клали монетку.
- Невеста должна сохранить ложку, из которой ел жених, и на 3-й, 7-й и 40-й день после свадьбы жена должна была дать мужу покушать именно из этой ложки.
Что нельзя делать в високосный год?
- В високосный год не колядуют на Святки, так как считается, что можно потерять свое счастье. Также по примете колядующий, который одевается в животное или чудовище, может перенять личность нечистой силы.
- Беременным женщинам нельзя стричься до родов, так как ребенок может родиться нездоровым.
- В високосный год не стоит начинать постройку бани, что может привести к недугам.
- В високосный год не рекомендуют говорить другим о своих планах и намерениях, так как удача может отвернуться.
- Не рекомендуют продавать или обменивать животных и нельзя топить котят, так как это приведет к бедности.
- Нельзя собирать грибы, так как считается, что они все становятся ядовитыми.
- В високосный год не нужно праздновать появление первого зуба у ребенка. По примете, если звать гостей, зубы будут плохими.
- Нельзя менять работу или квартиру. По примете новое место окажется безрадостным и неспокойным.
- Если в високосный год родился ребенок, его нужно как можно быстрее крестить, а крестных выбирать среди кровных родственников.
- Пожилым людям нельзя заранее покупать вещи для похорон, так как это может приблизить смерть.
- Нельзя разводиться, так как в дальнейшем не удастся найти свое счастье.
sharky:
25.03.2013 в 16:04
а с какого перепугу 1900 не является високосным? Високосный год наступает каждые 4 года, т.е. если на 4 делится - это високосный год. И больше не надо никаких делений на 100 или 400.
Вопросы задавать это нормально, а вот прежде чем утверждать что-то изучите матчасть. Земля делает оборот вокруг солнца за 365 суток 5 часов 48 минут 46 секунд. Как видите остаток не ровно 6 часов, а на 11 минут 14 секунд меньше. Это значит, что делая високосный год мы прибавляем лишнее время. Где-то за 128 лет накапливаются лишние сутки. Поэтому каждые 128 лет в одном из 4-х летних циклов високосный год делать не надо, чтобы избавиться от этих лишних суток. Но чтобы упростить, високосным не делают каждый 100-й год. Идея понятна? Хорошо. А как же тогда быть дальше, ведь лишний день прибавляется каждые 128 лет, а урезаем его каждые 100 лет? Да, мы отрезаем больше положенного, и это нужно когда-то вернуть.
Если первый абзац понятен и все еще интересно, тогда читаем дальше, но будет сложнее.
Итак за 100 лет набегает 100/128=25/32 суток лишнего времени (это 18 часов 45 минут). Мы не делаем високосный год, то есть отнимаем одни сутки: получаем 25/32-32/32=-7/32 суток (это 5 часов 15 минут), то есть отнимаем лишнее. Через четыре цикла по 100 лет (через 400 лет) мы отнимем лишнего 4*(-7/32)=-28/32 суток (это минус 21 час). На 400-й год мы делаем високосный год, то есть прибавляем сутки (24 часа): -28/32+32/32=4/32=1/8 (это 3 часа).
Мы делаем каждый 4 год високосным, но при этом каждый 100 год не високосным и при этом каждый 400 год високосным, но все равно каждые 400 лет прибавляются лишние 3 часа. Через 8 циклов по 400 лет, то есть через 3200 лет накопится лишних 24 часа, то есть одни сутки. Тогда добавляется еще одно обязательное условие: каждые 3200-й год не должен быть високосным. 3200 лет можно округлить до 4000, но тогда опять придется играться с добавленными или урезанными сутками.
3200 лет не прошло, так что об этом условии, если его таким сделают, еще не говорят. А вот 400 со дня утверждения Григорианского календаря лет уже прошло.
Года кратные 400 всегда високосные (пока что на сегодняшний день), остальные года кратные 100 не високосные, остальные года кратные 4 високосные.
Приведенный мною расчет показывает что при нынешнем состоянии ошибка в одни сутки накопиться за 3200 лет, но вот что об этом пишет википедия:
«Ошибка в одни сутки по сравнению с годом равноденствий в григорианском календаре накопится примерно за 10 000 лет (в юлианском - примерно за 128 лет). Часто встречающаяся оценка, приводящая к величине порядка 3000 лет, получается, если не учитывать, что со временем изменяется количество суток в тропическом году и, кроме того, изменяется соотношение между продолжительностями времён года». Из той же википедии формула продолжительности года в сутках с дробями неплохо обрисовывает картину:
365,2425=365+0,25-0,01+0,0025=265+1/4-1/100+1/400
Год 1900 високосным не был, а 2000 был, причем особенный, потому что такой високосный бывает раз в 400 лет.