The DateTimeImmutable class

Introduction

Representation of date and time.

This class behaves the same as DateTime except new objects are returned when modification methods such as DateTime::modify are called.

Class synopsis

DateTimeImmutable
implements DateTimeInterface
/* Inherited constants */
public const string DateTimeInterface::ATOM = "Y-m-d\\TH:i:sP";
public const string DateTimeInterface::COOKIE = "l, d-M-Y H:i:s T";
public const string DateTimeInterface::ISO8601 = "Y-m-d\\TH:i:sO";
public const string DateTimeInterface::ISO8601_EXPANDED = "X-m-d\\TH:i:sP";
public const string DateTimeInterface::RFC822 = "D, d M y H:i:s O";
public const string DateTimeInterface::RFC850 = "l, d-M-y H:i:s T";
public const string DateTimeInterface::RFC1036 = "D, d M y H:i:s O";
public const string DateTimeInterface::RFC1123 = "D, d M Y H:i:s O";
public const string DateTimeInterface::RFC7231 = "D, d M Y H:i:s \\G\\M\\T";
public const string DateTimeInterface::RFC2822 = "D, d M Y H:i:s O";
public const string DateTimeInterface::RFC3339 = "Y-m-d\\TH:i:sP";
public const string DateTimeInterface::RFC3339_EXTENDED = "Y-m-d\\TH:i:s.vP";
public const string DateTimeInterface::RSS = "D, d M Y H:i:s O";
public const string DateTimeInterface::W3C = "Y-m-d\\TH:i:sP";
/* Methods */
public __construct(string $datetime = "now", DateTimeZonenull $timezone = null)
#[\NoDiscard(message: "as DateTimeImmutable::add() does not modify the object itself")] public DateTimeImmutable add(DateInterval $interval)
public static DateTimeImmutablefalse createFromFormat(string $format, string $datetime, DateTimeZonenull $timezone = null)
public static DateTimeImmutable createFromInterface(DateTimeInterface $object)
public static static createFromMutable(DateTime $object)
public static static createFromTimestamp(intfloat $timestamp)
public static arrayfalse getLastErrors()
#[\NoDiscard(message: "as DateTimeImmutable::modify() does not modify the object itself")] public DateTimeImmutable modify(string $modifier)
public static DateTimeImmutable __set_state(array $array)
#[\NoDiscard(message: "as DateTimeImmutable::setDate() does not modify the object itself")] public DateTimeImmutable setDate(int $year, int $month, int $day)
#[\NoDiscard(message: "as DateTimeImmutable::setISODate() does not modify the object itself")] public DateTimeImmutable setISODate(int $year, int $week, int $dayOfWeek = 1)
#[\NoDiscard(message: "as DateTimeImmutable::setMicrosecond() does not modify the object itself")] public static setMicrosecond(int $microsecond)
#[\NoDiscard(message: "as DateTimeImmutable::setTime() does not modify the object itself")] public DateTimeImmutable setTime(
    int $hour,
    int $minute,
    int $second = 0,
    int $microsecond = 0
)
#[\NoDiscard(message: "as DateTimeImmutable::setTimestamp() does not modify the object itself")] public DateTimeImmutable setTimestamp(int $timestamp)
#[\NoDiscard(message: "as DateTimeImmutable::setTimezone() does not modify the object itself")] public DateTimeImmutable setTimezone(DateTimeZone $timezone)
#[\NoDiscard(message: "as DateTimeImmutable::sub() does not modify the object itself")] public DateTimeImmutable sub(DateInterval $interval)
public DateInterval diff(DateTimeInterface $targetObject, bool $absolute = false)
public string format(string $format)
public int getMicrosecond()
public int getOffset()
public int getTimestamp()
public DateTimeZonefalse getTimezone()
public array __serialize()
public void __unserialize(array $data)
#[\Deprecated] public void __wakeup()

Changelog

Version Description
8.4.0 The class constants are now typed.
7.1.0 The DateTimeImmutable constructor now includes the current microseconds in the constructed value. Before this, it would always initialise the microseconds to 0.

Table of Contents