# La classe DateTime

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

## Introduction

Représentation de la date et du temps.

Cette classe se comporte comme DateTimeImmutable, à l'exception que les objets se modifient eux-mêmes quand une méthode de modification telle que DateTime::modify() est appelée.

Avertissement

L'appel de méthodes sur des objets de la classe DateTime modifiera les informations encapsulées dans ces objets, si vous voulez éviter cela, vous devrez utiliser l'opérateur `clone` pour créer un nouvel objet. L'utilisation de DateTimeImmutable au lieu de DateTime est recommandée pour obtenir ce comportement par défaut.

## Synopsis de la classe

class DateTime implements DateTimeInterface {
/* Constantes héritées */
public const string DateTimeInterface::ATOM = "Y-m-d\\TH:i:sP";
public const string DateTimeInterface::COOKIE = "l, d-M-Y H:i:s T";
public const string DateTimeInterface::ISO8601 = "Y-m-d\\TH:i:sO";
public const string DateTimeInterface::ISO8601_EXPANDED = "X-m-d\\TH:i:sP";
public const string DateTimeInterface::RFC822 = "D, d M y H:i:s O";
public const string DateTimeInterface::RFC850 = "l, d-M-y H:i:s T";
public const string DateTimeInterface::RFC1036 = "D, d M y H:i:s O";
public const string DateTimeInterface::RFC1123 = "D, d M Y H:i:s O";
public const string DateTimeInterface::RFC7231 = "D, d M Y H:i:s \\G\\M\\T";
public const string DateTimeInterface::RFC2822 = "D, d M Y H:i:s O";
public const string DateTimeInterface::RFC3339 = "Y-m-d\\TH:i:sP";
public const string DateTimeInterface::RFC3339_EXTENDED = "Y-m-d\\TH:i:s.vP";
public const string DateTimeInterface::RSS = "D, d M Y H:i:s O";
public const string DateTimeInterface::W3C = "Y-m-d\\TH:i:sP";
/* Méthodes */
public __construct(string `$datetime` = "now", ?DateTimeZone `$timezone` = `null`)
public add(DateInterval `$interval`): DateTime
public static createFromFormat(string `$format`, string `$datetime`, ?DateTimeZone `$timezone` = `null`): DateTime|false
public static createFromImmutable(DateTimeImmutable `$object`): static
public static createFromInterface(DateTimeInterface `$object`): DateTime
public modify(string `$modifier`): DateTime
public static __set_state(array `$array`): DateTime
public setDate(int `$year`, int `$month`, int `$day`): DateTime
public setISODate(int `$year`, int `$week`, int `$dayOfWeek` = 1): DateTime
public setTime(
int `$hour`,
int `$minute`,
int `$second` = 0,
int `$microsecond` = 0
): DateTime
public setTimestamp(int `$timestamp`): DateTime
public setTimezone(DateTimeZone `$timezone`): DateTime
public sub(DateInterval `$interval`): DateTime
public diff(DateTimeInterface `$targetObject`, bool `$absolute` = `false`): DateInterval
public format(string `$format`): string
public getOffset(): int
public getTimestamp(): int
public getTimezone(): DateTimeZone|false
public __serialize(): array
public __unserialize(array `$data`): void
public __wakeup(): void
}

## Historique

Version | Description
--- | ---
8.4.0 | Les constantes de classe sont maintenant typées.
7.2.0 | Les constantes de classe de DateTime sont maintenant définies sur DateTimeInterface.
7.1.0 | Le constructeur de DateTime inclut désormais les microsecondes actuelles dans la valeur construite. Avant cela, il initialisait toujours les microsecondes à `0`.

## Sommaire

- DateTime::add — Modifie un objet un objet DateTime, avec le nombre de jours, mois, années, heures, minutes et secondes ajouté
- DateTime::__construct — Retourne un nouvel objet DateTime
- DateTime::createFromFormat — Analyse une heure au format texte selon le format spécifié.
- DateTime::createFromImmutable — Retourne une nouvelle instance d'objet DateTime encapsulant l'objet DateTimeImmutable fourni
- DateTime::createFromInterface — Retourne un nouvel objet DateTime encapsulant l'objet DateTimeInterface fourni
- DateTime::getLastErrors — Alias de DateTimeImmutable::getLastErrors
- DateTime::modify — Modifie le timestamp
- DateTime::__set_state — Le gestionnaire __set_state
- DateTime::setDate — Assigne la date
- DateTime::setISODate — Configure une date ISO
- DateTime::setTime — Assigne l'heure
- DateTime::setTimestamp — Assigne la date et l'heure à l'aide d'un horodatage Unix
- DateTime::setTimezone — Configure le fuseau horaire de l'objet DateTime
- DateTime::sub — Soustrait une durée à un objet DateTime