W3docs

Como Converter Data Judaica em Data Juliana no PHP

Saiba como usar jewishtojd() no PHP para converter datas do calendário judaico em Contagem de Dias Julianos com exemplos práticos.

A função jewishtojd() do PHP converte uma data do calendário judaico (hebraico) em uma Contagem de Dias Julianos — um número inteiro único que identifica um dia. Como a Contagem de Dias Julianos é neutra em relação ao calendário, ela funciona como um "pivô" comum que permite converter entre sistemas de calendário: converta uma data judaica para um Dia Juliano e, em seguida, converta esse número em uma data gregoriana (ou qualquer outro calendário suportado). Esta página explica como a função funciona, seus parâmetros e casos extremos, além de mostrar exemplos verificados e executáveis.

As funções de Calendário requerem a extensão PHP calendar. Ela é incluída na maioria das versões e está habilitada por padrão no Windows; no Linux, pode ser necessário compilar o PHP com --with-calendar ou instalar um pacote como php-calendar.

O que é uma Contagem de Dias Julianos?

Uma Contagem de Dias Julianos (JDN) é o número de dias decorridos desde o meio-dia (UTC) de 1º de janeiro de 4713 AEC no calendário juliano proléptico. Não confunda com o calendário juliano — apesar do nome compartilhado, a Contagem de Dias Julianos é apenas um contador contínuo de dias, sem meses ou anos.

O JDN é o formato de ponte para a extensão de calendário do PHP. Toda função *tojd() (jewishtojd(), gregoriantojd(), juliantojd(), frenchtojd()) produz um JDN, e toda função jdto*() consome um. Portanto, toda conversão entre calendários passa por ele:

Jewish date ──jewishtojd()──▶ JDN ──jdtogregorian()──▶ Gregorian date

Assinatura da função

jewishtojd(int $month, int $day, int $year): int
ParâmetroDescrição
$monthNúmero do mês judaico onde 1 = Tishri, não janeiro (veja a armadilha abaixo). O intervalo válido é 1–13.
$dayDia do mês, 1–30.
$yearAno judaico, contado a partir da data tradicional da criação (ano 1 ≈ 3761 AEC).

Retorna a Contagem de Dias Julianos como um inteiro, ou 0 para uma data fora do intervalo suportado (anos aproximadamente de 1 a 9999).

Armadilha: a numeração dos meses começa em Tishri

Este é o erro mais comum com jewishtojd(). O ano religioso judaico começa na primavera (Nisan), mas o PHP numera os meses a partir de Tishri (o ano novo civil, Rosh Hashaná). Portanto:

#Mês (ano não-bissexto)
1Tishri
2Heshvan
3Kislev
4Tevet
5Shevat
6Adar
7Adar (igual ao 6 em ano não-bissexto)
8Nisan
9Iyyar
10Sivan
11Tammuz
12Av
13Elul

Em um ano bissexto, um mês extra é inserido: o mês 6 torna-se Adar I e o mês 7 torna-se Adar II. Passar 6 não significa junho ou Sivan — Sivan é o mês 10.

Exemplo básico

Isso converte 6 Sivan 5783 (o festival de Shavuot, que é o 10º mês, dia 6) para sua Contagem de Dias Julianos e, em seguida, de volta para uma data gregoriana para que você possa verificar:

Convertendo uma data judaica para uma Contagem de Dias Julianos

<?php

$jewishMonth = 10; // Sivan
$jewishDay   = 6;
$jewishYear  = 5783;

$jdn = jewishtojd($jewishMonth, $jewishDay, $jewishYear);

echo "Julian Day Count: " . $jdn . "\n";
echo "Gregorian date:   " . jdtogregorian($jdn) . "\n";

Saída:

Julian Day Count: 2460091
Gregorian date:   5/26/2023

Portanto, 6 Sivan 5783 cai em 26 de maio de 2023 no calendário gregoriano.

Convertendo uma data judaica para gregoriana

Combinar jewishtojd() com jdtogregorian() é o caso de uso mais comum no mundo real — por exemplo, encontrar a data gregoriana de Rosh Hashaná (1 Tishri):

<?php

function jewishToGregorian(int $month, int $day, int $year): string
{
    $jdn = jewishtojd($month, $day, $year);

    if ($jdn === 0) {
        return "Invalid Jewish date";
    }

    return jdtogregorian($jdn);
}

echo jewishToGregorian(1, 1, 5784) . "\n"; // Rosh Hashanah 5784

Saída:

9/16/2023

Conversão de ida e volta com jdtojewish()

O inverso de jewishtojd() é jdtojewish(), que transforma uma Contagem de Dias Julianos de volta em uma string de data judaica no formato mês/dia/ano. A conversão de ida e volta é uma boa maneira de confirmar que a numeração dos meses está correta:

<?php

$jdn = jewishtojd(10, 6, 5783); // 6 Sivan 5783
echo "JDN:    " . $jdn . "\n";
echo "Jewish: " . jdtojewish($jdn) . "\n"; // month/day/year

Saída:

JDN:    2460091
Jewish: 10/6/5783

Tratando entradas inválidas

Para uma data que o PHP não consegue representar, jewishtojd() retorna 0 em vez de lançar um erro, portanto sempre verifique isso antes de passar o resultado para outra função:

<?php

$jdn = jewishtojd(0, 5, 5783); // month 0 is invalid

var_dump($jdn);                // int(0)
echo $jdn === 0 ? "Out of range\n" : jdtogregorian($jdn) . "\n";

Saída:

int(0)
Out of range

Quando eu usaria isso?

  • Exibir datas hebraicas/feriados de um banco de dados no calendário gregoriano local do usuário.
  • Calcular o número de dias entre duas datas fornecidas em sistemas de calendário diferentes (subtraia seus JDNs).
  • Encontrar o dia da semana para uma data judaica alimentando o JDN para jddayofweek().

Conclusão

jewishtojd() converte uma data do calendário judaico (hebraico) em uma Contagem de Dias Julianos, o inteiro neutro em relação ao calendário que a extensão de calendário do PHP usa como pivô para todas as conversões entre calendários. As duas coisas a lembrar são que a numeração dos meses começa em Tishri (1), não em Nisan, e que a função retorna 0 para datas fora do intervalo. Combine-a com jdtogregorian(), jdtojewish() ou jddayofweek() para construir fluxos completos de trabalho com datas.

Prática

Prática
Qual é a função de jewishtojd() no PHP?
Qual é a função de jewishtojd() no PHP?
Was this page helpful?