PHP Conference Nagoya 2025

gregoriantojd

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

gregoriantojdConvierte una fecha Gregoriana en Fecha Juliana

Descripción

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

El rango válido para el Calendario Gregoriano es de 4714 A.C. a 9999 D.C.

Aunque esta función puede manejar fechas que se remontan hasta 4714 A.C., tal uso puede no ser significativo. El calendario Gregoriano no fue establecido hasta el 15 de octubre de 1582 (o 5 de octubre de 1582 el el calendario Juliano). Algunos países no lo aceptaron hasta mucho más tarde. Por ejemplo, Gran Bretaña lo adoptó en 1752, la URSS en 1918 y Grecia en 1923. La mayoría de los países europeos usaban el calendario Juliano antes del Gregoriano.

Parámetros

month

El mes como un número desde 1 (para enero) hasta 12 (para diciembre)

day

El día como un número desde 1 a 31

year

El año como un número entre -4714 y 9999

Valores devueltos

La Fecha Juliana para la fecha gregoriana dada como un entero.

Ejemplos

Ejemplo #1 Funciones de calendario

<?php
$jd
= GregorianToJD(10, 11, 1970);
echo
"$jd\n";
$gregoriano = JDToGregorian($jd);
echo
"$gregoriano\n";
?>

Ver también

  • jdtogregorian() - Convierte una Fecha Juliana en una fecha Gregoriana
  • cal_to_jd() - Convertir un calendario soportado a la Fecha Juliana

add a note

User Contributed Notes 3 notes

up
2
jettyrat at jettyfishing dot com
19 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
0
httpwebwitch
20 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
-5
jfg
15 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