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
JavaScript: расширения объекта Date
Date.prototype.date2jday() - возвращает значение юлианского дня.
Date.prototype.jday2date(jday) - принимает в качестве аргумента юлианский день и возвращает время UNIX.
Про юлианские дни в 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 |