PHP 8.4.1 Released!

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 __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

add a note

User Contributed Notes 1 note

up
5
bohwaz
2 years ago
Please note that if you are using DATE_RFC7231 format (used in HTTP/1.1), you'll need to change the DateTime object timezone to GMT *before*, or you'll encounter weird results, as this format DOES NOT convert the date to GMT.

So if you have a DateTime object using UTC+01:00 as its timezone, you will get a difference of 1 hour between your resulting date string and what should be the "correct" date.

Recommended use:

<?php
$date_gmt
= clone $date;
$date_gmt->setTimezone(new \DateTimeZone('GMT'));
echo
$date_gmt->format(DATE_RFC7231);
?>
To Top