ConFoo 2025

DateTimeInterface arayüzü

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

Giriş

DateTimeInterface arayüzü, bağımsız değişken, dönüş değeri veya özellik türü bildirimlerinde değer olarak DateTime veya DateTimeImmutable kullanılabilsin diye oluşturuldu. Bu arayüzü kullanıcı tabanlı sınıflarla gerçeklemek mümkün değildir.

Ayrıca, DateTimeImmutable ve DateTime nesnelerini DateTimeImmutable::format() ve DateTime::format() üzerinden biçemlemeye izin veren ortak sabitler de bu arayüz ile tanımlanabilir.

Arayüz Sözdizimi

interface DateTimeInterface {
/* Sabitler */
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";
/* Yöntemler */
public diff(DateTimeInterface $targetObject, bool $absolute = false): DateInterval
public format(string $format): string
public getOffset(): int
public getTimestamp(): int
public __wakeup(): void
}

Öntanımlı Sabitler

DateTimeInterface::ATOM
DATE_ATOM
Atom (örnek: 2005-08-15T15:52:01+00:00)
DateTimeInterface::COOKIE
DATE_COOKIE
HTTP çerezleri (örnek: Monday, 15-Aug-2005 15:52:01 UTC)
DateTimeInterface::ISO8601
DATE_ISO8601
ISO-8601 (örnek: 2005-08-15T15:52:01+0000)

Bilginize: Bu gösterim ISO-8601 ile uyumlu değildir, fakat geriye uyumluluk için kaldı. ISO-8601 ile uyumluluk için bunun yerine DateTimeInterface::ISO8601_EXPANDED, DateTimeInterface::ATOM kullanılmalıdır. (bkz: ISO8601:2004 bölüm 4.3.3 bent d)

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

Bilginize: Bu biçim, her zaman bir işaret karakteri ekleyerek, ISO-8601'in normal aralığı olan 0000-9999 dışındaki yıl aralıklarına izin verir. Ayrıca, bu zaman dilimi bölümünün (+01:00) ISO-8601 ile uyumlu olduğunu da belirtir.

DateTimeInterface::RFC822
DATE_RFC822
RFC 822 (örnek: Mon, 15 Aug 05 15:52:01 +0000)
DateTimeInterface::RFC850
DATE_RFC850
RFC 850 (örnek: Monday, 15-Aug-05 15:52:01 UTC)
DateTimeInterface::RFC1036
DATE_RFC1036
RFC 1036 (örnek: Mon, 15 Aug 05 15:52:01 +0000)
DateTimeInterface::RFC1123
DATE_RFC1123
RFC 1123 (örnek: Mon, 15 Aug 2005 15:52:01 +0000)
DateTimeInterface::RFC7231
DATE_RFC7231
RFC 7231 (PHP 7.0.19 ve 7.1.5'ten beri) (örnek: Sat, 30 Apr 2016 17:52:13 GMT)
DateTimeInterface::RFC2822
DATE_RFC2822
RFC 2822 (örnek: Mon, 15 Aug 2005 15:52:01 +0000)
DateTimeInterface::RFC3339
DATE_RFC3339
DATE_ATOM gibidir.
DateTimeInterface::RFC3339_EXTENDED
DATE_RFC3339_EXTENDED
RFC 3339 uzun gösterim. (örnek: 2005-08-15T15:52:01.000+00:00)
DateTimeInterface::RSS
DATE_RSS
RSS (örnek: Mon, 15 Aug 2005 15:52:01 +0000)
DateTimeInterface::W3C
DATE_W3C
Dünya Çapında Web Konsorsiyumu (örnek: 2005-08-15T15:52:01+00:00)

Sürüm Bilgisi

Sürüm: Açıklama
8.2.0 DateTimeInterface::ISO8601_EXPANDED sabiti eklendi.
7.2.0 DateTime sınıf sabitleri artık DateTimeInterface üzerinde tanımlı.

İçindekiler

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