Распечатать страницу

Даты по григорианскому и юлианскому календарям 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