Разработчику. Сборник рецептов PHP
Задавайте вопросы

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

Вернуться назад

Задача

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

Решение

Модуль 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 (первый год по Иудейскому календарю).

Смотрите документацию по функциям календаря на http://www.php.net/calendar история Григорианского календаря изложена на странице http://scienceworld.wolfram.com/astronomy/GregorianCalendar.html

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ