# La interfaz DateTimeInterface

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

## Introducción

El propósito de DateTimeInterface es actuar como declaración de tipo para DateTime y DateTimeImmutable. No es posible que el usuario implemente esta interfaz en sus propias clases.

## Sinopsis de la Clase

class DateTimeInterface {
/* Constantes */
const string ATOM = "Y-m-d\TH:i:sP";
const string COOKIE = "l, d-M-Y H:i:s T";
const string ISO8601 = "Y-m-d\TH:i:sO";
const string RFC822 = "D, d M y H:i:s O";
const string RFC850 = "l, d-M-y H:i:s T";
const string RFC1036 = "D, d M y H:i:s O";
const string RFC1123 = "D, d M Y H:i:s O";
const string RFC2822 = "D, d M Y H:i:s O";
const string RFC3339 = "Y-m-d\TH:i:sP";
const string RFC3339_EXTENDED = "Y-m-d\TH:i:s.vP";
const string RSS = "D, d M Y H:i:s O";
const string W3C = "Y-m-d\TH:i:sP";
/* Métodos */
public diff(DateTimeInterface `$datetime2`, bool `$absolute` = `false`): DateInterval
public format(string `$format`): string
public getOffset(): int
public getTimestamp(): int
public getTimezone(): DateTimeZone
public __wakeup()
}

## Constantes predefinidas

`DateTimeInterface::ATOM`
`DATE_ATOM`
  Atom (ejemplo: 2005-08-15T15:52:01+00:00)
`DateTimeInterface::COOKIE`
`DATE_COOKIE`
  Cookies de HTTP (ejemplo: Monday, 15-Aug-2005 15:52:01 UTC)
`DateTime::ISO8601`
`DATE_ISO8601`
  ISO-8601 (ejemplo: 2005-08-15T15:52:01+0000)

  > Nota: Este formato no es compatible con el ISO-8601, aunque se deja por razones de retrocompatibilidad. Use `DateTime::ATOM` o `DATE_ATOM` en su lugar para que sea compatible con el ISO-8601.

`DateTimeInterface::RFC822`
`DATE_RFC822`
  RFC 822 (ejemplo: Mon, 15 Aug 05 15:52:01 +0000)
`DateTimeInterface::RFC850`
`DATE_RFC850`
  RFC 850 (ejemplo: Monday, 15-Aug-05 15:52:01 UTC)
`DateTimeInterface::RFC1036`
`DATE_RFC1036`
  RFC 1036 (ejemplo: Mon, 15 Aug 05 15:52:01 +0000)
`DateTimeInterface::RFC1123`
`DATE_RFC1123`
  RFC 1123 (ejemplo: Mon, 15 Aug 2005 15:52:01 +0000)
`DateTimeInterface::RFC2822`
`DATE_RFC2822`
  RFC 2822 (ejemplo: Mon, 15 Aug 2005 15:52:01 +0000)
`DateTimeInterface::RFC3339`
`DATE_RFC3339`
  Lo mismo que `DATE_ATOM` (desde PHP 5.1.3)
`DateTimeInterface::RFC3339_EXTENDED`
`DATE_RFC3339_EXTENDED`
  RFC 3339 EXTENDED format (desde PHP 7.0.0) (ejemplo: 2005-08-15T15:52:01.000+00:00)
`DateTimeInterface::RSS`
`DATE_RSS`
  RSS (ejemplo: Mon, 15 Aug 2005 15:52:01 +0000)
`DateTimeInterface::W3C`
`DATE_W3C`
  World Wide Web Consortium (ejemplo: 2005-08-15T15:52:01+00:00)

## Historial de cambios

Versión | Descripción
--- | ---
7.2.0 | Las constantes de clase de DateTime ahora están definidas en DateTimeInterface.
5.5.8 | Ahora, intentar implementar DateTimeInterface emite un error fatal. Anteriormente, la implementación de la interfaz no emitía un error, aunque este comportamiento era erróneo.

## Tabla de contenidos

- DateTime::diff — Devuelve la diferencia entre dos objetos DateTime
- DateTime::format — Devuelve la fecha formateada según el formato dado
- DateTime::getOffset — Devuelve el índice de la zona horaria
- DateTime::getTimestamp — Obtiene la marca de tiempo Unix
- DateTime::getTimezone — Develve la zona horaria relativa al objeto DateTime dado
- DateTime::__wakeup — El gestor __wakeup