gregoriantojd

(PHP 4, PHP 5, PHP 7, PHP 8)

gregoriantojdConvierte una fecha gregoriana en número de días del calendario juliano

Descripción

gregoriantojd(int $month, int $day, int $year): int

El intervalo de validez para el calendario gregoriano es del 25 de noviembre, 4714 a.C. al menos hasta el 31 de diciembre 9999 d.C.

Aunque es posible manipular fechas hasta el 4714 a.C., tal uso no es significativo. Este calendario fue creado el 18 de octubre de 1582 d.C. (o 5 de octubre 1582 en calendario juliano). Algunos países no lo aceptaron hasta mucho más tarde. Por ejemplo, los británicos no lo adoptaron hasta 1752, los rusos en 1918 y los griegos en 1923. La mayoría de los países europeos utilizaban el calendario juliano antes del gregoriano.

Parámetros

month

El mes, en forma de número comprendido entre 1 (para Enero) y 12 (para Diciembre)

day

El día, en forma de número comprendido entre 1 y 31. Si el mes tiene menos días de los proporcionados, se produce un desbordamiento; ver ejemplo a continuación.

year

El año, en forma de número comprendido entre -4714 y 9999. Los números negativos significan años antes de C., los números positivos significan después de C. Se observa que no existe el año 0; 31 de diciembre, 1 a.C. es inmediatamente seguido por 1 de enero, 1 d.C.

Valores devueltos

El día juliano para la fecha gregoriana proporcionada, en forma de int. Las fechas fuera del intervalo válido devuelven 0.

Ejemplos

Ejemplo #1 Funciones calendario

<?php
$jd
= gregoriantojd(10, 11, 1970);
echo
"$jd\n";
$gregorian = jdtogregorian($jd);
echo
"$gregorian\n";
?>

El resultado del ejemplo sería:

2440871
10/11/1970

Ejemplo #2 Comportamiento de desbordamiento

<?php
echo gregoriantojd(2, 31, 2018), PHP_EOL,
gregoriantojd(3, 3, 2018), PHP_EOL;
?>

El resultado del ejemplo sería:

2458181
2458181

Ver también

  • jdtogregorian() - Convierte el número de días del calendario Juliano en fecha Gregoriana
  • cal_to_jd() - Convertir un calendario soportado a la Fecha Juliana

add a note

User Contributed Notes 3 notes

up
1
jettyrat at jettyfishing dot com
20 years ago
You can obtain the decimal fraction of the Julian date with the php gregoriantojd() function or the function shown below by applying this code to the returned value.

<?php
$julianDate
= gregoriantojd($month, $day, $year);

//correct for half-day offset
$dayfrac = date('G') / 24 - .5;
if (
$dayfrac < 0) $dayfrac += 1;

//now set the fraction of a day
$frac = $dayfrac + (date('i') + date('s') / 60) / 60 / 24;

$julianDate = $julianDate + $frac;
?>
up
1
httpwebwitch
21 years ago
This function also ignores decimal fractions in JD dates, and it uses non-standard format for returning the Gregorian date.

So, if your JD date is 2453056.28673, the Gregorian returned value is 2/20/2004, not "2004-02-20 23:45:36"

The decimal part is important, since the Julian day begins at noon, for example 2453056.49 is on Friday, 2453056.50 is on Saturday. Discarding the decimal part means that your returned Gregorian Date will be wrong 50% of the time.
up
-1
jfg
16 years ago
If you need the same output as the g_date_get_julian function of the GlibC, here is my php implementation :

<?php
/**
* Glib g_date_get_julian PHP implementation
*
* @param $str Date string in a format accepted by strtotime
* @author jfg
*/
private function _get_julian( $str )
{
$d = date_create($str);

if(
$d == false )
return
0;

$day_in_year = (int) date_format($d, "z");
$year = (int) date_format($d, "Y") - 1;
$julian_days = $year * 365;
$julian_days += ($year >>= 2);
$julian_days -= ($year /= 25);
$julian_days += $year >> 2;
$julian_days += $day_in_year + 1;

return
ceil($julian_days);
}

?>
To Top