# L'interface DateTimeInterface

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

## Introduction

DateTimeInterface a été créé pour que les déclarations de type de paramètre, retour, ou propriété puissent accepter soit DateTime soit DateTimeImmutable comme valeur. Il n'est pas possible d'implémenter cette interface dans les classes utilisateurs.

Les constantes communes qui permettent de formater les objets DateTimeImmutable ou DateTime via DateTimeImmutable::format() et DateTime::format() sont également définies sur cette interface.

## Sommaire de l'Interface

interface DateTimeInterface {
/* Constantes */
public const string ATOM = "Y-m-d\\TH:i:sP";
public const string COOKIE = "l, d-M-Y H:i:s T";
public const string ISO8601 = "Y-m-d\\TH:i:sO";
public const string ISO8601_EXPANDED = "X-m-d\\TH:i:sP";
public const string RFC822 = "D, d M y H:i:s O";
public const string RFC850 = "l, d-M-y H:i:s T";
public const string RFC1036 = "D, d M y H:i:s O";
public const string RFC1123 = "D, d M Y H:i:s O";
public const string RFC7231 = "D, d M Y H:i:s \\G\\M\\T";
public const string RFC2822 = "D, d M Y H:i:s O";
public const string RFC3339 = "Y-m-d\\TH:i:sP";
public const string RFC3339_EXTENDED = "Y-m-d\\TH:i:s.vP";
public const string RSS = "D, d M Y H:i:s O";
public const string W3C = "Y-m-d\\TH:i:sP";
/* Méthodes */
public function diff(DateTimeInterface `$targetObject`, bool `$absolute` = `false`): DateInterval
public function format(string `$format`): string
public function getMicrosecond(): int
public function getOffset(): int
public function getTimestamp(): int
public function getTimezone(): DateTimeZone|false
public function __serialize(): array
public function __unserialize(array `$data`): void
#[\Deprecated]
public function __wakeup(): void
}

## Constantes pré-définies

DateTimeInterface::ATOM string
DATE_ATOM
  Atom (exemple: 2005-08-15T15:52:01+00:00) ; compatible avec ISO-8601, RFC 3339 et XML Schema
DateTimeInterface::COOKIE string
DATE_COOKIE
  HTTP Cookies (exemple: Monday, 15-Aug-2005 15:52:01 UTC)
DateTimeInterface::ISO8601 string
DATE_ISO8601
  Semblable à ISO-8601 (exemple: 2005-08-15T15:52:01+0000)

  > Note: Ce format n'est pas compatible avec ISO-8601, mais reste ainsi pour des raisons de compatibilité ascendante. Utiliser DateTimeInterface::ISO8601_EXPANDED, DateTimeInterface::ATOM pour assurer la compatibilité avec ISO-8601. (ref ISO8601:2004 section 4.3.3 clause d)

DateTimeInterface::ISO8601_EXPANDED string
DATE_ISO8601_EXPANDED
  ISO-8601 Expanded (exemple: +10191-07-26T08:59:52+01:00)

  > Note: Ce format permet des plages d'années en dehors de la plage normale de ISO-8601 allant de `0000` à `9999` en incluant toujours un caractère de signe. Il s'assure également que cette partie de fuseau horaire (`+01:00`) est compatible avec ISO-8601.

DateTimeInterface::RFC822 string
DATE_RFC822
  RFC 822 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
DateTimeInterface::RFC850 string
DATE_RFC850
  RFC 850 (exemple: Monday, 15-Aug-05 15:52:01 UTC)
DateTimeInterface::RFC1036 string
DATE_RFC1036
  RFC 1036 (exemple: Mon, 15 Aug 05 15:52:01 +0000)
DateTimeInterface::RFC1123 string
DATE_RFC1123
  RFC 1123 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
DateTimeInterface::RFC7231 string
DATE_RFC7231
  RFC 7231 (à partir de PHP 7.0.19 et 7.1.5) (exemple: Sat, 30 Apr 2016 17:52:13 GMT)
DateTimeInterface::RFC2822 string
DATE_RFC2822
  RFC 2822 (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
DateTimeInterface::RFC3339 string
DATE_RFC3339
  Comme DATE_ATOM
DateTimeInterface::RFC3339_EXTENDED string
DATE_RFC3339_EXTENDED
  RFC 3339 EXTENDED format (exemple : 2005-08-15T15:52:01.000+00:00)
DateTimeInterface::RSS string
DATE_RSS
  RSS (exemple: Mon, 15 Aug 2005 15:52:01 +0000)
DateTimeInterface::W3C string
DATE_W3C
  World Wide Web Consortium (exemple : 2005-08-15T15:52:01+00:00)

## Historique

Version | Description
--- | ---
8.5.0 | Les constantes `DATE_RFC7231` et `DateTimeInterface::RFC7231` ont été rendues obsolètes.
8.4.0 | Les constantes de classe sont maintenant typées.
8.2.0 | La constante `DateTimeInterface::ISO8601_EXPANDED` a été ajoutée.
7.2.0 | Les constantes de classe de DateTime sont maintenant définies sur DateTimeInterface.

## Sommaire

- DateTimeInterface::diff — Retourne la différence entre deux objets DateTime
- DateTimeInterface::format — Retourne une date formatée suivant le format fourni
- DateTimeInterface::getMicrosecond — Récupère la partie microseconde de l'horodatage Unix
- DateTimeInterface::getOffset — Retourne le décalage horaire
- DateTimeInterface::getTimestamp — Récupère le timestamp Unix
- DateTimeInterface::getTimezone — Retourne le fuseau horaire relatif au DateTime fourni
- DateTime::__serialize — Sérialise un DateTime
- DateTime::__unserialize — Désérialise un DateTime
- DateTime::__wakeup — Le gestionnaire __wakeup

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open