LonghornPHP 2026

gregoriantojd

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

gregoriantojdConverte uma data Gregoriana para a Contagem de Dias Julianos

Descrição

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

A escala válida para o calendário Gregoriano é de 25 de novembro de 4714 AEC até pelo menos 31 de dezembro de 9999 EC.

Embora esta função possa trabalhar com datas no passado distante até 4714 AEC, este uso pode não fazer sentido. O calendário Gregoriano não foi instituído até 15 de outubro de 1582 (ou 5 de outubro de 1582, no calendário Juliano). Alguns países não aceitaram este calendário até muito tempo depois. Por exemplo, a Grã-Bretanha o adotou em 1752, a URSS em 1918 e a Grécia em 1923. A maioria dos países Europeus usaram o calendário Juliano antes do calendário Gregoriano.

Parâmetros

month

O mês como um número entre 1 (para janeiro) e 12 (para dezembro)

day

O dia como um número entre 1 e 31. Se o mês tiver menos dias do que o especificado, ocorre transbordamento; veja o exemplo abaixo.

year

O ano como um número entre -4714 e 9999. Números negativos indicam anos AEC, números positivos indicam anos EC. Observe que não existe ano 0; 31 de dezembro, 1 AEC é seguido imediatamente por 1º de janeiro 1 EC.

Valor Retornado

O Dia Juliano como um inteiro para a data gregoriana informada. Datas fora da escala válida retornam 0.

Examples

Exemplo #1 Funções de calendário

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

O exemplo acima produzirá:

2440871
10/11/1970

Exemplo #2 Comportamento de transbordamento

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

O exemplo acima produzirá:

2458181
2458181

Veja também

  • jdtogregorian() - Converte uma data no formato "Julian Day Count" para o formato Gregoriano
  • cal_to_jd() - Converte de um calendário suportado para o calendário de Contagem de Dias Julianos

adicionar nota

Notas de Usuários 2 notes

up
1
jettyrat at jettyfishing dot com
21 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
22 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.
To Top