Работа с негригорианскими календарями

Задача
Необходимо работать с негригорианским календарем, таким как Юлианский, Иудейский или Французский Республиканский.

Решение
Модуль PHP «календарь» обеспечивает функции преобразования для работы с Юлианским календарем, так же как и с Французским Республиканским и Иудейским календарями. Для работы с этими функциями необходимо, чтобы PHP был собран с поддержкой этого модуля. Эти функции используют юлианский счет дней (а это не то же самое, что Юлианский календарь) как промежуточный формат обмена данными между ними. Две функции, jdtogregorian() и gregoriantojd(), выполняют преобразования между юлианскими днями и теми же датами Григорианского календаря:

$jd = gregoriantojd(3,9,1876); // 9 марта 1876 года; $jd = 2406323
$gregorian = jdtogregorian($jd); // $gregorian = 3/9/1876

Допустимым диапазоном Григорианского календаря являются значения от 4714 BCE (до рождества Христова) до 9999 CE (после рождества Христова).

Обсуждение
Преобразования между юлианским представлением дат и Юлианским календарем выполняются при помощи функции jdtojulian() и juliantojd():

// 29 февраля 1900 года (негригорианский високосный год)
$jd = juliantojd(2,29,1900); // $jd = 2415092
$julian = jdtojulian($jd); // $julian = 2/29/1900
$gregorian = jdtogregorian($jd); // $gregorian = 3/13/1900

Допустимым диапазоном для Юлианского календаря являются значения от 4713 BCE до 9999 CE, но так как он был создан в 46 году до рождества Христова, то вы рискуете вызвать недовольство поклонников Юлианского календаря, если будете использовать его для дат до его создания.


Преобразования между юлианским представлением дат и Французским Республиканским календарем выполняется посредством функции jdtofrench() и frenchtojd():

$jd = frenchtojd(8,13,11); // 13 floreal XI; $jd = 2379714
$french = jdtofrench($jd); // $french = 8/13/11
$gregorian = jdtofregorian($jd); // $gregorian = 5/3/1803;
дата продажи Луизианы США.

Для Французского Республиканского календаря допустимыми являются даты с сентября 1792 года до сентября 1806 года, что представляет собой небольшой интервал времени, но, поскольку календарем пользовались с 1793 года до января 1806 года, этого вполне достаточно. Для преобразования между юлианским представлением дат и Иудейским календарем применяются функции jdtojewish() и jewishtojd( ):

$jd = JewishToJD(6,14,5761); // Adar 14, 5761; $jd = 2451978
$jewish = JDToJewish($jd); // $jewish = 6/14/5761
$gregorian = JDToGregorian($jd); // $gregorian = 3/9/2001

Допустимый диапазон для Иудейского календаря начинается с 3761
BCE (первый год по Иудейскому календарю).

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Вывод на печать даты и времени в определенном формате
Выделение дат и времен из строк
Выработка высокоточного времени
Определение дня недели, месяца, года или номера недели в году
Определение разности между датами юлианского календаря

Вернуться в раздел: PHP / 3. Дата и время