# 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é peuvent accepter soit DateTime ou 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 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
}

## Constantes pré-définies

`DateTimeInterface::ATOM` string
  Atom (exemple: 2005-08-15T15:52:01+00:00)
`DateTimeInterface::COOKIE` string
`DATE_COOKIE`
  HTTP Cookies (exemple: Monday, 15-Aug-2005 15:52:01 UTC)
`DateTimeInterface::ISO8601` string
`DATE_ISO8601`
  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. Utilisez `DateTime::ISO8601_EXPANDED` ou `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 (example: 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 (example: 2005-08-15T15:52:01+00:00)

## Historique

Version | Description
--- | ---
8.4.0 | Les constantes de classe sont maintenant typées.
8.2.0 | La constante `DateTimeInterface::ISO8601_EXPANDED` a été ajouté.
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::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 — Désérialise un DateTime
- DateTime::__unserialize — Unserialize an Datetime
- DateTime::__wakeup — Le gestionnaire __wakeup