(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::__construct -- date_create_immutable — Retourne un nouvel objet DateTimeImmutable
Style orienté objet
$datetime = "now", ?DateTimeZone $timezone = null)Style procédural
$datetime = "now", ?DateTimeZone $timezone = null): DateTimeImmutable|falseRetourne un nouvel objet DateTimeImmutable.
datetimeUne chaîne date/heure. Les formats valides sont expliqués dans la documentation sur les formats Date et Heure.
Passer"now" pour obtenir le temps courant lors de
l'utilisation du paramètre timezone.
timezonedatetime.
Si timezone est omis ou null,
le fuseau horaire actuel sera utilisé.
Note: Le paramètre
timezoneet le fuseau horaire actuel sont ignorés quand le paramètredatetimeest un horodatage UNIX (p. ex.@946684800) ou spécifie un fuseau horaire (p. ex.2010-01-28T15:00:00+02:00ou2010-07-05T06:00:00Z).
Retourne une nouvelle instance DateTimeImmutable.
Si une chaîne de date ou de temps invalide est fournie, une DateMalformedStringException est lancée. Antérieur à PHP 8.3, ceci était une Exception.
| Version | Description |
|---|---|
| 8.3.0 | Lance désormais une DateMalformedStringException si une chaîne invalide est fournie, au lieu de Exception. |
| 7.1.0 | Désormais les microsecondes sont remplies avec leur valeur actuelle. Et non '00000'. |
Exemple #1 Exemple de DateTimeImmutable::__construct()
Style orienté objet
<?php
try {
$date = new DateTimeImmutable('2000-01-01');
} catch (Exception $e) {
echo $e->getMessage();
exit(1);
}
echo $date->format('Y-m-d');L'exemple ci-dessus va afficher :
2000-01-01
Style procédural
<?php
$date = date_create('2000-01-01');
if (!$date) {
$e = date_get_last_errors();
foreach ($e['errors'] as $error) {
echo "$error\n";
}
exit(1);
}
echo date_format($date, 'Y-m-d');L'exemple ci-dessus va afficher :
2000-01-01
Exemple #2 Subtilités de DateTimeImmutable::__construct()
<?php
date_default_timezone_set('America/Jamaica');
// date/time spécifié dans le fuseau horaire PHP.
$date = new DateTimeImmutable('2000-01-01');
echo $date->format('Y-m-d H:i:sP') . "\n";
// date/time spécifié dans le fuseau horaire spécifié.
$date = new DateTimeImmutable('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
// date/time courant dans le fuseau horaire par défaut de PHP.
$date = new DateTimeImmutable();
echo $date->format('Y-m-d H:i:sP') . "\n";
// date/time courante dans le fuseau horaire spécifié.
$date = new DateTimeImmutable('now', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
// Utilisant un horodatage UNIX. Il est à noter que le résultat est dans le fuseau horaire UTC.
$date = new DateTimeImmutable('@946684800');
echo $date->format('Y-m-d H:i:sP') . "\n";
// Les valeurs inexistantes sont reportées.
$date = new DateTimeImmutable('2000-02-30');
echo $date->format('Y-m-d H:i:sP') . "\n";Résultat de l'exemple ci-dessus est similaire à :
2000-01-01 00:00:00-05:00 2000-01-01 00:00:00+12:00 2010-04-24 10:24:16-04:00 2010-04-25 02:24:16+12:00 2000-01-01 00:00:00+00:00 2000-03-01 00:00:00-05:00
Note:
Les dates reportées peuvent être détectées en vérifiant les avertissements à l'aide de DateTimeImmutable::getLastErrors().
Exemple #3 Changement du fuseau horaire associé
<?php
$timeZone = new \DateTimeZone('Asia/Tokyo');
$time = new \DateTimeImmutable();
$time = $time->setTimezone($timeZone);
echo $time->format('Y/m/d H:i:s e'), "\n";Résultat de l'exemple ci-dessus est similaire à :
2022/08/12 23:49:23 Asia/Tokyo
Exemple #4 Utilisation d'une chaîne de date/heure relative
<?php
$time = new \DateTimeImmutable("-1 year");
echo $time->format('Y/m/d H:i:s'), "\n";Résultat de l'exemple ci-dessus est similaire à :
2021/08/12 15:43:51