W3docs

jdtofrench()

A função jdtofrench() do PHP converte um número de dias julianos em uma data do Calendário Republicano Francês, gerenciando automaticamente os anos bissextos.

Introdução

O Calendário Revolucionário Francês, também conhecido como Calendário Republicano, foi criado durante a Revolução Francesa e utilizado na França de 1793 a 1805. Foi projetado para substituir o calendário gregoriano e visava ser mais racional e científico. O calendário baseava-se no conceito de tempo decimal e era composto por 12 meses de 30 dias cada, com 5 ou 6 dias adicionais ao final do ano para compensar os dias excedentes.

A Contagem de Dias Julianos, por outro lado, é um sistema de contagem de dias utilizado em astronomia. É definida como o número de dias decorridos desde o meio-dia de 1º de janeiro de 4713 a.C. (calendário juliano). O PHP inclui a função nativa jdtofrench() na extensão Calendar para converter a Contagem de Dias Julianos para o Calendário Revolucionário Francês, gerenciando automaticamente as regras de anos bissextos do calendário.

Fórmula de Conversão

Para converter a Contagem de Dias Julianos para a Data do Calendário Revolucionário Francês, utilizamos o seguinte algoritmo:

J = JDC - 2375839
N = J mod 365
if N < 360 then
    Q = floor(N / 30) + 1
    R = (N mod 30) + 1
else
    Q = 13
    R = N - 359
end if

Onde:

  • J é o número de dias decorridos desde o início do Calendário Revolucionário Francês (22 de setembro de 1792)
  • N é o número do dia no ano corrente (0-364)
  • Q é o número do mês (1-12 para os 12 meses, 13 para os dias complementares)
  • R é o número do dia no mês (1-30) ou o dia complementar (1-5/6)

Explicação da Fórmula

A fórmula para converter a Contagem de Dias Julianos para a Data do Calendário Revolucionário Francês é direta quando analisada passo a passo. Vejamos cada etapa.

Passo 1: Calcular J e N

Primeiro, calcule J subtraindo 2375839 (a Contagem de Dias Julianos de 22 de setembro de 1792, a época do calendário) da Contagem de Dias Julianos alvo. Em seguida, encontre N, o número do dia dentro do ciclo atual de 365 dias:

J = JDC - 2375839
N = J mod 365

Passo 2: Calcular Q e R

O calendário Revolucionário Francês divide o ano em 12 meses de exatamente 30 dias, seguidos de 5 ou 6 dias complementares. Determinamos o mês (Q) e o dia (R) usando estas regras:

if N < 360 then
    Q = floor(N / 30) + 1
    R = (N mod 30) + 1
else
    Q = 13
    R = N - 359
end if

Se N for menor que 360, a data cai dentro de um dos 12 meses. Dividimos N por 30 para encontrar o índice do mês e somamos 1. O resto fornece o índice do dia, também ajustado somando 1. Se N for 360 ou maior, a data cai no período dos dias complementares (Sans-culottides), ao qual é atribuído o número de mês 13.

Sintaxe

jdtofrench(int $julian_day): string
ParâmetroDescrição
$julian_dayO inteiro da Contagem de Dias Julianos a ser convertido.

Valor de retorno: uma string no formato "mês/dia/ano", onde cada parte é um número (por exemplo "6/12/1"). A função retorna "0/0/0" para qualquer Contagem de Dias Julianos fora do intervalo válido do calendário (22 de setembro de 1792 a 22 de setembro de 1806).

Exemplo

Vamos converter a Contagem de Dias Julianos 2376000 para uma Data do Calendário Revolucionário Francês.

Primeiro, calcule J e N:

J = 2376000 - 2375839 = 161
N = 161 mod 365 = 161

Em seguida, calcule Q e R:

N < 360, so:
Q = floor(161 / 30) + 1 = 5 + 1 = 6
R = (161 mod 30) + 1 = 11 + 1 = 12

Portanto, o resultado é mês 6, dia 12, ano 1. Usando a tabela de meses abaixo, o mês 6 é Ventôse, resultando em 12 Ventôse, Ano 1.

Implementação em PHP

O PHP fornece a função nativa jdtofrench() na extensão Calendar, que trata a conversão e a lógica dos dias complementares automaticamente. Ela retorna uma string numérica "mês/dia/ano":

// Requires the Calendar extension
echo jdtofrench(2376000); // Outputs: 6/12/1

Os três números correspondem exatamente ao Q (mês), R (dia) e ao ano que calculamos acima. Para transformá-los no nome histórico do mês, divida a string e consulte o mês em uma tabela:

$frenchMonths = [
    1 => "Vendémiaire", 2 => "Brumaire",  3 => "Frimaire",
    4 => "Nivôse",      5 => "Pluviôse",  6 => "Ventôse",
    7 => "Germinal",    8 => "Floréal",   9 => "Prairial",
    10 => "Messidor",  11 => "Thermidor", 12 => "Fructidor",
    13 => "Sans-culottides",
];

list($month, $day, $year) = explode("/", jdtofrench(2376000));
echo "{$day} " . $frenchMonths[$month] . ", Year {$year}"; // 12 Ventôse, Year 1

Para datas fora do intervalo válido do calendário, a função retorna "0/0/0", portanto verifique esse valor sentinela em vez de assumir uma data real:

$jdc = 2376000;
$result = jdtofrench($jdc);
if ($result !== "0/0/0") {
    echo "French Republican date: {$result}";
} else {
    echo "Date is outside the French Revolutionary Calendar range.";
}

Funções Relacionadas

A extensão Calendar fornece conversores correspondentes que podem ser combinados com jdtofrench():

  • frenchtojd() — a inversa: data Republicana Francesa de volta para uma Contagem de Dias Julianos.
  • jdtogregorian() — Contagem de Dias Julianos para uma data gregoriana.
  • jdtojulian() — Contagem de Dias Julianos para uma data do calendário juliano.
  • jddayofweek() — o dia da semana para uma determinada Contagem de Dias Julianos.

Conclusão

Em conclusão, o PHP fornece a função nativa jdtofrench() na extensão Calendar para converter Contagens de Dias Julianos em datas do Calendário Revolucionário Francês. Ao utilizar essa função nativa, é possível traduzir com precisão datas históricas, contabilizando automaticamente as regras de anos bissextos e os dias complementares do calendário.

Prática

Prática
O que a função jdtofrench() do PHP faz?
O que a função jdtofrench() do PHP faz?
Was this page helpful?