Даты по григорианскому и юлианскому календарям VFP
« Назад Григорианский календарь (новый стиль) был введен папой Григорием XIII и заменил юлианский календарь (старый стиль). Григорианский календарь берет отсчет от 4 октября 1582 г. по юлианскому календарю. Причем этот день юлианского календаря стал 15 октября 1582 г. в григорианском. Поэтому, если использовать григорианский календарь начиная с 15 октября 1582 г. (по новому стилю), а до этой даты употреблять юлианский календарь, то дат между 5 октября 1582 г. и 14 октября 1582 г. включительно не существует. По умолчанию даты в VFP задаются и вычисляются по григорианскому календарю. Дату, однако, можно привести к юлианскому календарю. Функция SYS(11, dExpression | tExpression | cExpression)преобразовывает дату, дату и время или строку в формате даты или даты и времени григорианского календаря в номер дня по юлианскому календарю. Тип возвращаемого результата – Character. Параметры: dExpression | tExpression | cExpression – дата | дата и время | символьное представление даты или даты и времени по григорианскому календарю. Пример: currentDate = Date( ) && Пусть текущая дата – это 14 ноября 2004 г. currenrJulianDate = Sys(11, currentDate) ? currentDate && Напечатает: 11/14/04 ? currenrJulianDate && Напечатает: 2453324 Дате 01.01.0001 по новому стилю VFP ставит в соответствие дату 1721426. Учитывая, что средняя длительность года в юлианском календаре в интервале 4-х лет равняется 365.25 суток, дата 1721426 задает 4713 год. То есть в VFP по юлианскому календарю можно обращаться к датам вплоть до 4713 года до Рождества Христова. Обратное преобразование выполнит функция SYS(10). Функция SYS(10, nJulianDayNumber)переводит номер дня nJulianDayNumber по юлианскому календарю в символьное представление даты по григорианскому календарю. Пример: currenrJulianDate = Sys(11, Date( )) && Пусть текущая дата – это 14 ноября 2004 г. ? Sys(10, Val(currenrJulianDate)) && Напечатает: 11/14/04 set century on ? Sys(10, 1721426) && Напечатает: 01/01/0001 Функция SYS(1)возвращает строку, содержащую номер дня по юлианскому календарю и отвечающую системной (текущей) дате. Возвращаемое функцией значение верно вычисляется USA-версией VFP для любой системной даты после 14 сентября 1752 г. вплоть до 31 декабря 9999 г. Пример: && Пусть текущая дата – это 14 ноября 2004 г. ? Sys(1) && Напечатает: 2453324 ? Sys(11, Date( )) && Напечатает: 2453324 |