Когда произошла смена юлианского календаря на григорианский? (Разногласие между Википедией и программой cal)

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

MiK13
Сообщения: 718
ОС: Linux Debian

Когда произошла смена юлианского календаря на григорианский?

Сообщение MiK13 » 14.12.2018 16:39

Когда-то давно обнаружил, что программа cal печатает календарь на любой год в диапазоне 1..9999.
И решил посмотреть, знает ли она про смену календаря.
В Википедии написано, что
Впервые григорианский календарь был введён папой римским Григорием XIII в католических странах 4 октября 1582 года взамен прежнего юлианского: следующим днём после четверга 4 октября стала пятница 15 октября.
Но программа cal ничего подобного не выдала. Стал искать по годам и обнаружил

Код: Выделить всё

$ cal 9 1752
   Сентябрь 1752      
Вс Пн Вт Ср Чт Пт Сб  
       1  2 14 15 16  
17 18 19 20 21 22 23  
24 25 26 27 28 29 30  
То есть коррекция правильная, но почему год (и даже век) другой?
С программой ncal Ещё интереснее. Для неё можно задать код страны, для которой она покажет календарь. Но вот как задать код, я пока не понял. По умолчанию она берёт код их настроек системы.

Код: Выделить всё

$ ncal 2 1918
    Февраль 1918      
Пн    18 25         
Вт    19 26         
Ср    20 27         
Чт 14 21 28         
Пт 15 22            
Сб 16 23            
Вс 17 24            
P.S.
Разобрался с кодами. Правда, не до конца. Оказалось, что их надо задавать большими латинскими буквами: RU, US, GB, FR, IT. Это те коды, что я проверил. И обнаружил, что переход на "новый стиль" произошёл:
В России (RU) -- в феврале 1918 года
В США (US) и Великобритании (GB) -- в сентябле 1752 года
Во Франции (FR) -- в декабре 1582 года
В Италии (IT) -- как и указано в Википедии, -- в октябре 1582 года.
Хотелось бы узнать, какие коды ещё воспринимает программа ncal
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15169
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение Bizdelnick » 14.12.2018 16:51

Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

MiK13
Сообщения: 718
ОС: Linux Debian

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение MiK13 » 14.12.2018 21:19

Bizdelnick писал:
14.12.2018 16:51
википедия://ISO 3166-1
Спасибо. Проверил. Сработало лишь с небольшой частью кодов. Время перехода сильно различается по годам.
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4644
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение SLEDopit » 15.12.2018 00:46

MiK13 писал:
14.12.2018 16:39
Стал искать по годам и обнаружил
Страшно представить как долго продолжались поиски (:

Вообще в man'e написано:
Assume the switch from Julian to Gregorian Calendar at the date associated
with the country_code. If not specified, ncal tries to guess the switch date
from the local environment or falls back to September 2, 1752. This was
when Great Britain and her colonies switched to the Gregorian Calendar.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

MiK13
Сообщения: 718
ОС: Linux Debian

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение MiK13 » 16.12.2018 14:38

SLEDopit писал(а):
15.12.2018 00:46
Страшно представить как долго продолжались поиски (:
Да, если на каждый год выдавать ncal, а потом в списке искать, в каком месяце "мало" дней/, то неизвестно, сколько на это уйдёт времени.
Но, к счастью, в Linux кроме ncal есть такие программы, как bash, grep, wc. И с их помощью эта задача решается довольно быстро:
for ((y=1500;y<2100;y++)) ; do echo -n $y ; ncal $y | wc ; done | grep -v -e 399 -e 400
SLEDopit писал(а):
15.12.2018 00:46
Вообще в man'e написано:
Assume the switch from Julian to Gregorian Calendar at the date associated
with the country_code. If not specified, ncal tries to guess the switch date
from the local environment or falls back to September 2, 1752. This was
when Great Britain and her colonies switched to the Gregorian Calendar.
Я это читал. Когда увидел, что кроме cal есть и ncal
И увидел, что они дают разные результаты. То есть cal рассчитана только на США, с ncal учитывает локаль.
Поэтому и захотелось узнать про другие страны,
Оказалось, что из 250 стран это сделано только для 31 (в Wheezy, в Strstch ещё не проверял).
Спасибо сказали:

Аватара пользователя
s.xbatob
Сообщения: 695
ОС: RfRemix

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение s.xbatob » 16.12.2018 15:40

А ещё поинтересуйтесь, например, про Финляндию. У самого есть открытка за 1911 год, отправленная из Гельсинфорса 13 января, а пришедшая в Петербург 31 декабря (и это в тот же день!)
Спасибо сказали:

MiK13
Сообщения: 718
ОС: Linux Debian

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение MiK13 » 17.12.2018 13:12

s.xbatob писал:
16.12.2018 15:40
А ещё поинтересуйтесь, например, про Финляндию. У самого есть открытка за 1911 год, отправленная из Гельсинфорса 13 января, а пришедшая в Петербург 31 декабря (и это в тот же день!)

Код: Выделить всё

$ ncal -s FI 02 1753
    Февраль 1753      
Пн  1  8 15         
Вт  2  9 16         
Ср  3 10 17         
Чт  4 11            
Пт  5 12            
Сб  6 13            
Вс  7 14            
$ ncal -s RU 02 1918
    Февраль 1918      
Пн    18 25         
Вт    19 26         
Ср    20 27         
Чт 14 21 28         
Пт 15 22            
Сб 16 23            
Вс 17 24            
В Финляндии смена календаря произошла в 1753 году -- после 17 февраля наступило 1 марта.
В России смена календаря произошла в 1918 году -- после 31 января наступило 14 февраля.
Поэтому когда в Финляндии считалось уже 13 января, в России ещё считали 31 декабря.
Вот отсортированный по датам список переходов для тех стран, которые я обнаружил (в Wheezy, в Stretch ещё не проверял, может быть там что-то добавили)

Код: Выделить всё

ES 1582 10.04 -> 10.15 Испания
IT 1582 10.04 -> 10.15 Италия
PL 1582 10.04 -> 10.15 Польша
PT 1582 10.04 -> 10.15 Португалия
FR 1582 12.09 -> 12.20 Франция
BE 1582 12.14 -> 12.25 Бельгия
LU 1582 12.14 -> 12.25 Люксембург
NL 1582 12.14 -> 12.25 Нидерланды
AT 1583 10.05 -> 10.16 Австрия
CZ 1584 01.06 -> 01.17 Чехия
HU 1587 10.21 -> 11.01 Венгрия
CH 1655 02.28 -> 03.11 Швейцария
DE 1700 02.18 -> 03.01 Германия
DK 1700 02.18 -> 03.01 Дания
NO 1700 02.18 -> 03.01 Норвегия
IS 1700 11.16 -> 11.28 Исландия
AU 1752 09.02 -> 09.14 Австралия
GB 1752 09.02 -> 09.14 Великобритания
CA 1752 09.02 -> 09.14 Канада
US 1752 09.02 -> 09.14 США
FI 1753 02.17 -> 03.01 Финляндия
CN 1911 12.18 -> 13.01 КНР
AL 1912 11.30 -> 12.14 Албания
BG 1916 03.18 -> 04.01 Болгария
RU 1918 01.31 -> 02.14 Россия
LV 1918 02.01 -> 02.15 Латвия
LI 1918 02.01 -> 02.15 Лихтенштейн
JP 1918 12.18 -> 13.01 Япония
SI 1919 03.04 -> 03.18 Словения
RO 1919 03.31 -> 04.14 Румыния
GR 1924 03.09 -> 03.23 Греция
TR 1926 12.18 -> 13.01 Турция
По идее первой должна была быть Италия, но, так как "Испания" < "Италия", она оказалась первой.
13-й месяц для Японии и Турции -- имеется ввиду Январь следующего года.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15169
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение Bizdelnick » 17.12.2018 13:25

MiK13, если так сильно интересует сабж, то, чем насиловать ncal, не проще ли глянуть хотя бы тут?
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

MiK13
Сообщения: 718
ОС: Linux Debian

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение MiK13 » 17.12.2018 13:36

Bizdelnick писал:
17.12.2018 13:25
MiK13, если так сильно интересует сабж, то, чем насиловать ncal, не проще ли глянуть хотя бы тут?
Я думаю, что ncal от этого не обидится :)
Заодно узнаю, что знает Linux.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15169
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение Bizdelnick » 17.12.2018 13:41

MiK13 писал:
17.12.2018 13:36
Заодно узнаю, что знает Linux.
Ничего он об этом не знает. Ему достаточно времени с начала эпохи Unix.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

MiK13
Сообщения: 718
ОС: Linux Debian

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение MiK13 » 17.12.2018 14:08

Bizdelnick писал:
17.12.2018 13:41
Ничего он об этом не знает. Ему достаточно времени с начала эпохи Unix.
Смотря для чего. Заложили, ведь, зачем-то в программу ncal информацию о том, когда какие страны переходили на "новый стиль".
Да и для time_t в Linux назначили, в отличие от Windows, signed, а не unsigned, чем ограничили для 32-битных систем 2038 год. Но зато позволили задать почти любую дату 20 века.
Кстати, в Википедии написано, что в Японии Первый день григорианского календаря -- 1 января 1873, а ncal почему-то говорит про 1919 год.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15169
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение Bizdelnick » 17.12.2018 14:20

MiK13 писал:
17.12.2018 14:08
Заложили, ведь, зачем-то в программу ncal информацию о том, когда какие страны переходили на "новый стиль".
В ncal, но не в linux.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15169
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение Bizdelnick » 17.12.2018 14:28

MiK13 писал:
17.12.2018 14:08
Кстати, в Википедии написано, что в Японии Первый день григорианского календаря -- 1 января 1873, а ncal почему-то говорит про 1919 год.
nacal однозначно неправ, потому что юлианского календаря в Японии вообще отродясь не было.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 2350
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14,2

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение Hephaestus » 18.12.2018 13:00

Bizdelnick писал:
17.12.2018 14:28
юлианского календаря в Японии вообще отродясь не было
Юлианский календарь тут вообще-то ни при чём.
Переход на григорианский календарь возможен не только с юлианского, но и с любого другого.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15169
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение Bizdelnick » 18.12.2018 13:07

Hephaestus писал:
18.12.2018 13:00
Юлианский календарь тут вообще-то ни при чём.
Переход на григорианский календарь возможен не только с юлианского, но и с любого другого.
ncal показывает для Японии даты по 1918 год включительно по юлианскому календарю.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 2350
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14,2

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение Hephaestus » 18.12.2018 13:27

Bizdelnick писал:
18.12.2018 13:07
ncal показывает для Японии даты по 1918 год включительно по юлианскому календарю.
А вот это момент интересный.
Вот, скажем, не было в Японии юлианского календаря, а был свой, лунно-солнечный.
Затем совершается переход на григорианский. Ну, пусть в 1918 году, не важно.
Что в этом случае должен показать ncal для Японии до 1918 года? Что-то ведь он должен показать.
Вот и показывает, что может. Или ничего не должен показывать?

Помню, по молодости имел дело с 1С, а там есть объект Календарь и поле ввода соответствующее.
Я как-то раз попробовал отмотать даты назад, насколько это возможно. Получилось до нулевого года. Во времена до нашей эры попасть не удалось - дальше нулевого года в глубь веков он меня не пустил.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15169
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение Bizdelnick » 18.12.2018 13:41

Hephaestus писал:
18.12.2018 13:27
Что в этом случае должен показать ncal для Японии до 1918 года? Что-то ведь он должен показать.
Вот и показывает, что может. Или ничего не должен показывать?
Не знаю. Показывал бы уж григорианский, раз ничего кроме него и юлианского не умеет. Какой смысл показывать то, чего нет и не было?
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

MiK13
Сообщения: 718
ОС: Linux Debian

Re: Когда произошла смена юлианского календаря на григорианский?

Сообщение MiK13 » 18.12.2018 19:53

Bizdelnick писал:
18.12.2018 13:41
Hephaestus писал:
18.12.2018 13:27
Что в этом случае должен показать ncal для Японии до 1918 года? Что-то ведь он должен показать.
Вот и показывает, что может. Или ничего не должен показывать?
Не знаю. Показывал бы уж григорианский, раз ничего кроме него и юлианского не умеет. Какой смысл показывать то, чего нет и не было?
Наверно правильно было бы показывать именно японский лунно-солнечный. Но если его показать сложно, то лучше, уж, ничего не показывать и сообщить, что-то типа "по Японии данных нет".
И интересно было бы понять, почему в ncal для Японии начало григорианского календаря установлено с 1919 года, а не с 1873. Впрочем, подправить это, думаю, не трудно. В ncal.c явно заданы в таблице "Last day of Julian calendar". При этом в ней ещё и страна указана.
Исправить это для Японии, думаю, не трудно. Как и внести дополнительные страны (в Википедии список большой)
Правда, мне не удалось "сделать" ncal. Видимо надо собирать сразу весь bsdmainutils.

Я сравнил таблицу дат в ncal.c с тем, что получилось у меня. И обнаружил три "страны", которые я не заметил. Ими оказались:
Швеция -- у неё ISO код SE, но в предыдущих версиях ncal было задано SW.
Югославия -- у неё код YU, но в таблице Википедии её не было, так как уже нет этой страны.
И там оказалась ещё одна страна -- некая "Латиния" ("Latin") с кодом LN. Для неё в качестве последнего дня юлианского календаря указано 31 мая 9999 года (причём "май" задан в виде восьмеричного числа, 05 :)) И, соответственно, ncal -s LN 9999 показывает, что в 9999 году не будет ни июня, ни июля :).
Спасибо сказали: