unixtojd()
Apprenez à convertir un timestamp Unix en numéro de jour julien en PHP avec la fonction unixtojd() et ses paramètres.
Convertir un timestamp Unix en jour julien en PHP
La fonction unixtojd() de PHP convertit un timestamp Unix en un numéro de jour julien — un entier unique qui compte le nombre de jours depuis le début de la période julienne (1er janvier 4713 av. J.-C. dans le calendrier julien proleptique). Cette page explique ce que retourne la fonction, comment l'appeler, les cas où elle diffère de l'intuition, et comment effectuer la conversion inverse.
Un timestamp Unix est le nombre de secondes écoulées depuis le 1er janvier 1970, 00:00:00 UTC. Un numéro de jour julien (JDN) est un comptage continu de jours largement utilisé en astronomie et dans les calculs de calendrier, car la différence entre deux jours juliens correspond simplement au nombre de jours qui les séparent — sans arithmétique sur les mois ou les années bissextiles. Notez que le « jour julien » ici n'est pas identique à une date dans le calendrier julien historique ; c'est un décompte continu de jours.
Comment fonctionne unixtojd()
unixtojd() prend le nombre entier de secondes d'un timestamp Unix, le divise en jours entiers, puis y ajoute le numéro de jour julien de l'époque Unix (1970-01-01), qui est 2440588. La conversion est effectuée en UTC et le résultat a une granularité au niveau du jour — les heures, minutes et secondes du timestamp sont ignorées, donc chaque instant dans le même jour UTC correspond au même jour julien.
unixtojd() fait partie de l'extension Calendar de PHP. Elle est compilée par défaut dans la plupart des installations, mais sur une installation PHP minimale, vous devrez peut-être activer l'extension calendar avant de pouvoir utiliser la fonction.
Syntaxe
unixtojd(?int $timestamp = null): int|false$timestamp— Le timestamp Unix à convertir. S'il est omis (ounull), l'heure actuelle est utilisée, exactement comme si vous aviez passétime().- Retourne un entier représentant le numéro de jour julien, ou
falsesi le timestamp n'a pas pu être converti.
Exemple de base
Convertir le timestamp Unix actuel en jour julien :
Ce code affiche le timestamp Unix actuel et le numéro de jour julien correspondant.
Points de référence connus
Étant donné que la conversion est fixe, quelques timestamps produisent toujours le même jour julien. Ces valeurs sont utiles pour vérifier votre code :
<?php
echo unixtojd(0), "\n"; // 2440588 -> 1970-01-01 (the Unix epoch)
echo unixtojd(mktime(0, 0, 0, 1, 1, 2000)), "\n"; // 2451545 -> 2000-01-01
echo unixtojd(mktime(0, 0, 0, 7, 4, 2025)), "\n"; // 2460861 -> 2025-07-04Appel sans argument
Passer aucun argument est équivalent à passer time(), donc les deux lignes ci-dessous retournent la même valeur :
<?php
echo unixtojd(), "\n"; // current day, no timestamp needed
echo unixtojd(time()), "\n"; // identical resultConversion inverse : jdtounix()
La fonction inverse de unixtojd() est jdtounix(), qui transforme un numéro de jour julien en timestamp Unix correspondant à minuit UTC de ce jour. Étant donné que unixtojd() supprime l'heure de la journée, un aller-retour vous ramène au début du jour plutôt qu'au moment d'origine :
<?php
$start = mktime(15, 30, 0, 7, 4, 2025); // 2025-07-04 15:30:00
$jd = unixtojd($start);
$back = jdtounix($jd);
echo "Original: ", gmdate("Y-m-d H:i:s", $start), " UTC\n"; // 2025-07-04 15:30:00 UTC
echo "Back: ", gmdate("Y-m-d H:i:s", $back), " UTC\n"; // 2025-07-04 00:00:00 UTCQuand utiliser cette fonction ?
Les numéros de jours juliens sont particulièrement utiles lorsque vous devez compter des jours entiers entre deux dates sans vous soucier des longueurs de mois et des années bissextiles : calculs astronomiques, logique de planification, compteurs « jours restants », et interopérabilité avec des ensembles de données scientifiques qui stockent les dates sous forme de jours juliens. Pour le formatage et l'arithmétique de dates courants, l'API DateTime et les fonctions de date sont généralement plus adaptées.
Conclusion
unixtojd() convertit un timestamp Unix en numéro de jour julien — un comptage UTC au niveau du jour dont la valeur d'origine est 2440588. Elle utilise l'heure actuelle par défaut lorsqu'elle est appelée sans argument, ignore la partie heure de la journée, et est inversée par jdtounix(). Combinez-la avec mktime() et time() pour convertir n'importe quel instant en jour julien pour des calculs basés sur les jours.