Во многих документах часто требуется указывать дату прописью в именительном падеже, к примеру: в доверенностях, накладных и платежных поручениях. Например, дата 31.10.2018 прописью будет "тридцать первое октября две тысячи восемнадцатого года".
Ниже на JavaScript (см. код в конце статьи) реализован алгоритм преобразования даты в строку прописью в виде функции PropisData(data), в которой аргумент data при вызове функции должен быть записан в виде строки "дд.мм.гггг", где "дд" - порядковый номер календарного дня, "мм" - порядковый номер календарного месяца и "гггг" - порядковый номер календарного года, например, "02.06.1914". Данная функция может представлять прописью даты из 1-го десятитысячилетия н.э., то есть с 01.01.0001 по 31.12.9999.
Оценить работу этого алгоритма можно с помощью этой формы:
В начале в функции PropisData(data) с помощью регулярного выражения проверяется, соответствует ли дата формату "дд.мм.гггг", затем проверяется, является ли указанное выражение датой по григорианскому календарю (см. ниже); например, 01.05.2000 - корректная дата, а 29.02.1926 - не существующая дата в григорианском календаре.
function PropisData(data) //аргумент data должен быть строкой { //Проверка, соответствует ли дата формату ДД.ММ.ГГГГ if ( !/^\d\d\.\d\d\.\d\d\d\d$/.test(data) ) { return "не является датой по григорианскому календарю в формате ДД.ММ.ГГГГ"; }
var d = +data.substr(0, 2), //день m = +data.substr(3, 2), //месяц y = +data.substr(6, 4); //год
//Проверка, корректная ли дата по григорианскому календарю // До 1582 г. все года н.э., делящиеся на 4, считаются високосными, // после только те года, которые делятся на 4 и не деляться на 100 или делятся на 400; // если нужно учитывать високосные года до принятия григорианского календаря в России в 1918 г., // то замените в коде выражение "y < 1582" на "y < 1918". if (d == 0 || m == 0 || m > 12 || y == 0 || ((m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) && d > 31) || ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30) || (m == 2 && !(d < 29 || (d < 30 && y % 4 == 0 && (y < 1582 || y % 100 != 0 || y % 400 == 0)))) ) { return "не является датой по григорианскому календарю в формате ДД.ММ.ГГГГ"; }
Year7 = ["", "тысяча ", "две тысячи ", "три тысячи ", "четыре тысячи ", "пять тысяч ", "шесть тысяч ", "семь тысяч ", "восемь тысяч ", "девять тысяч "];
Григориа́нский календа́рь — система исчисления времени, основанная на циклическом обращении Земли вокруг Солнца; средняя продолжительность года принята равной 365,2425 суток; содержит 97 високосных лет на 400 лет[1].
Впервые григорианский календарь был введён папой римским Григорием XIII в католических странах 4 октября 1582 года взамен прежнего юлианского: следующим днём после четверга 4 октября стала пятница 15 октября. Григорианский календарь используется в большинстве государств и стран мира[2]. В литературе также применяется название — Новый стиль.
В григорианском календаре длительность года принимается равной 365,2425 суток. Длительность невисокосного года — 365 суток, високосного — 366.
Отсюда следует распределение високосных годов:
год, номер которого кратен 400, — високосный;
остальные годы, номер которых кратен 100, — невисокосные;
остальные годы, номер которых кратен 4, — високосные.
Таким образом, 1600 и 2000 годы были високосными, а 1700, 1800 и 1900 годы високосными не были. Также не будет високосным и 2100 год.
Погрешность в одни сутки по сравнению с годом равноденствий в григорианском календаре накопится примерно за 10 тысяч лет (в юлианском — примерно за 128 лет). Часто встречающаяся оценка, приводящая к величине порядка 3 тысяч лет, получается, если не учитывать, что со временем изменяется количество суток в тропическом году и, кроме того, изменяется соотношение между продолжительностями времён года[3][4][5].
В григорианском календаре годы бывают високосные и невисокосные; год может начинаться с любого из семи дней недели. В совокупности это даёт 2 × 7 = 14 вариантов календаря на год. ... В России (на территории, находившейся под контролем Советской власти) григорианский календарь был введён декретом от 26 января 1918 года Совнаркома, согласно которому в 1918 году после 31 января следует 14 февраля. На территориях бывшей Российской империи, находившихся под контролем других государственных образований, возникших после падения Временного правительства, даты официального введения нового стиля отличаются. Так, Временное Сибирское правительство ввело новый стиль декретом от 31 августа 1918 года, постановив считать день 1 октября 1918 днём 14 октября 1918 года[27]. Таким образом, в ряде стран, в том числе в России, в 1900 году был день 29 февраля, тогда как в большинстве стран его не было.