Julian Days

Julian Day Number - юлианский день; время, прошедшее с полудня 1 января 4713 до н.э. по юлианскому календарю (с полудня 24 ноября 4714 до н.э. по григорианскому календарю). Целая часть JD - количество дней, дробная часть - время.
В данном случае используется CJD = floor (JD + 0.5), где JD - юлианский день по григорианскому календарю.

PHP: jday_class

Открытые переменные:
$year - год (от -4713 до бесконечности)
$month - месяц (от 1 до 12)
$day - день месяца (от 1 до 31)
$jday - юлианский день (от 1 до 12)
Открытые функции:
int date2jday(int unixtime) - принимает в качестве аргумента время UNIX и присваивает переменной $jday значение юлианского дня, $year - номер года, $month - номер месяца, $day - номер дня в месяце. В случае, если аргумент не передан, берётся текущее время. unixtojd
int gcal2jday(int month, int day, int year) - переводит значения григорианского календаря (месяц, день, год) в юлианский день и присваивает его значение переменной $jday. Если аргументы занаданы неверно, функция возвращает false. GregorianToJD
int jday2date(int jday) - переводит юлианский день в время UNIX и присваивает: переменной $year - номер года, $month - номер месяца, $day - номер дня в месяце. На 32-разрядных машинах возвращает корректное время UNIX при значениях от -2147483648 до 214748364. jdtounix
скачать jday.php

JavaScript: расширения объекта Date

Date.prototype.date2jday() - возвращает значение юлианского дня.
Date.prototype.jday2date(jday) - принимает в качестве аргумента юлианский день и возвращает время UNIX.
скачать jday.js

Про юлианские дни в MySQL

В MySQL имеется пара функций to_days() и from_days(), которые переводят календарные даты в юлианские дни и наоборот. В MySQL отсчёт начинается с 1 января 0 г. н.э., так что юлианские дни и значения в MySQL различаются на 1721060
unixJDay = mysqlJDay + 1721060
mysqlJDay = unixJDay - 1721060
Следует учесть, что корректная работа начинается:
- при переводе календарной даты в юлианский день - с 1 марта 0 г. н.э.
mysql> select to_days('0000-02-28'), to_days('0000-03-01');
to_days('0000-02-28') to_days('0000-03-01')
-32212195 60
- при переводе юлианского дня в календарную дату - с 366 (1 января 1 г. н.э.)
mysql> select from_days(365), from_days(366);
from_days(365) from_days(366)
0000-00-00 0001-01-01