W3docs

PHP jdtounix() — Convertir un Jour Julien en timestamp Unix

Apprenez comment jdtounix() en PHP convertit un Jour Julien en timestamp Unix, avec syntaxe, exemples, plage valide et usage avec gregoriantojd() et date().

La fonction jdtounix() convertit un Jour Julien (Julian Day Count) en timestamp Unix. Elle fait partie de l'extension calendrier de PHP et constitue le pont entre le calcul de dates en style calendrier (qui travaille en jours entiers) et le temps en secondes utilisé par le reste des fonctions de date de PHP.

Cette page explique ce que représentent ces deux systèmes de numérotation, montre jdtounix() en action, couvre sa plage valide et ses pièges, puis présente les conversions de timestamp Unix plus courantes que vous utiliserez bien plus souvent (date() et strtotime()).

Deux façons de compter le temps

Avant d'utiliser jdtounix(), il est utile de bien comprendre ce qu'elle convertit.

Un timestamp Unix est le nombre de secondes écoulées depuis 1970-01-01 00:00:00 UTC (l'« époque Unix »). C'est le standard utilisé partout en PHP — time(), date(), strtotime() et DateTime fonctionnent tous avec des timestamps Unix.

Un Jour Julien (JDC) est le nombre de jours entiers écoulés depuis midi le 1er janvier 4713 av. J.-C. (dans le calendrier julien proleptique). Les astronomes et les bibliothèques de calendriers l'utilisent car il attribue un entier unique à chaque jour, ce qui rend trivial le comptage de jours entre des dates de différents systèmes calendaires. Les fonctions PHP gregoriantojd(), jdtogregorian() et leurs semblables produisent et consomment ces comptes.

jdtounix() traduit un JDC en timestamp Unix équivalent à minuit UTC de ce jour.

Syntaxe

jdtounix(int $julian_day): int
  • $julian_day — le Jour Julien à convertir.
  • Retourne le timestamp Unix correspondant. Le jour doit se situer dans la plage supportée ; une valeur hors plage lève une ValueError en PHP 8.0+ (les versions plus anciennes retournaient false).

Exemple de base

On dispose rarement d'un numéro de Jour Julien directement, donc le flux habituel est : convertir une date grégorienne en JDC avec gregoriantojd(), puis passer ce résultat à jdtounix().

<?php

// Build the Julian Day Count for 15 February 2022 (month, day, year).
$jd = gregoriantojd(2, 15, 2022);
echo $jd, "\n";                       // 2459626

// Convert that day to a Unix timestamp (midnight UTC).
$timestamp = jdtounix($jd);
echo $timestamp, "\n";                // 1644883200

// Confirm by formatting it back to a readable date.
echo gmdate('Y-m-d H:i:s', $timestamp); // 2022-02-15 00:00:00

Comme un Jour Julien représente une journée entière plutôt qu'un instant précis, jdtounix() retourne toujours le timestamp pour 00:00:00 UTC de ce jour. L'information sur l'heure ne fait tout simplement pas partie de l'entrée.

Plage valide

jdtounix() ne fonctionne qu'à l'intérieur de la fenêtre de l'époque Unix. Le jour le plus bas accepté est 1970-01-01, qui correspond au timestamp 0 :

<?php

// 1 January 1970 is the lowest day jdtounix() can represent.
var_dump(jdtounix(gregoriantojd(1, 1, 1970))); // int(0)

Passer un jour antérieur à l'époque est une erreur : en PHP 8.0 et supérieur, cela lève une ValueError, tandis que PHP 7 retournait false. Si le jour en entrée est fourni par l'utilisateur, validez la plage (ou enveloppez l'appel dans un bloc try/catch) avant de vous fier au résultat. Sur les systèmes où les timestamps sont stockés en entiers signés 32 bits, la limite supérieure pratique se situe en 2038.

La fonction inverse est unixtojd(), qui reconvertit un timestamp Unix en Jour Julien.

Convertir un timestamp Unix en date lisible

Une fois que vous disposez d'un timestamp — provenant de jdtounix(), time() ou d'une base de données — vous le formatez pour les humains avec la fonction date(). Elle prend une chaîne de format et un timestamp :

php— editable, runs on the server

Les barres obliques inversées dans \a\t échappent les lettres a et t pour qu'elles s'impriment littéralement au lieu d'être interprétées comme des caractères de format. Voici quelques-uns des caractères de format les plus courants :

  • Y — année sur quatre chiffres
  • m — mois avec zéros de remplissage (0112)
  • M — abréviation du mois (JanDec)
  • d — jour du mois avec zéros de remplissage (0131)
  • D — abréviation du jour de la semaine (SunSat)
  • g — heure au format 12 heures, sans zéro de remplissage (112)
  • H — heure au format 24 heures avec zéros de remplissage (0023)
  • i — minutes avec zéros de remplissage (0059)
  • s — secondes avec zéros de remplissage (0059)
  • aam/pm en minuscules

Une note sur les fuseaux horaires

PHP formate chaque timestamp par rapport au fuseau horaire par défaut du script, donc le même timestamp peut s'afficher comme des heures différentes sur des serveurs différents. Définissez le fuseau horaire explicitement en haut de votre script — avec date_default_timezone_set() comme ci-dessus — afin que les résultats soient reproductibles partout. Les exemples de cette page utilisent UTC.

Convertir une date lisible en timestamp Unix

Dans l'autre sens, strtotime() analyse une description de date en anglais et la convertit en timestamp Unix :

<?php

date_default_timezone_set('UTC');

$timestamp = strtotime('February 15, 2022 6:17 pm');
echo $timestamp; // 1644949020

strtotime() comprend de nombreux formats — 2022-02-15, next Friday, +1 week — mais il est strict sur la formulation. Les mots de remplissage tels que at ne sont pas autorisés : strtotime('February 15, 2022 at 6:17 pm') retourne false. Quand l'analyse échoue, strtotime() retourne false, donc validez son résultat avant de l'utiliser.

Quand utiliser jdtounix() ?

Pour le travail quotidien de « stocker et afficher une date », utilisez date(), strtotime() et DateTime — ils gèrent directement les dates et heures calendaires réelles. Utilisez jdtounix() (avec gregoriantojd()) lorsque vous travaillez déjà avec des numéros de Jours Juliens, par exemple lors de l'intégration de données astronomiques, de l'interopérabilité avec un autre système calendaire, ou du comptage de jours entiers entre des dates puis de la nécessité d'obtenir un timestamp standard en retour.

Conversion en un coup d'œil

graph LR;
    A[Gregorian date] -->|gregoriantojd| B[Julian Day Count];
    B -->|jdtounix| C[Unix timestamp];
    C -->|unixtojd| B;
    C -->|date| D[Readable string];

Conclusion

jdtounix() convertit un Jour Julien en timestamp Unix correspondant à minuit UTC de ce jour, retournant false pour les jours hors de la plage de l'époque. Elle s'associe naturellement à gregoriantojd() en entrée et à unixtojd() pour le chemin inverse. Pour la gestion ordinaire des dates, la boîte à outils plus large dans PHP Date et Heure — notamment date() et strtotime() — est ce que vous utiliserez le plus souvent.

Pratique

Pratique
Que fait la fonction jdtounix() en PHP ?
Que fait la fonction jdtounix() en PHP ?
Was this page helpful?