Класс DateTimeImmutable
(PHP 5 >= 5.5.0, PHP 7)
Введение
Данный класс ведет себя аналогично классу DateTime, за исключением того, что он никогда не изменяет себя и всегда возвращает новый объект.
Обзор классов
DateTimeImmutable
implements
DateTimeInterface
{
/* Методы */
public static DateTimeImmutable createFromFormat
( string
}$format
, string $time
[, DateTimeZone $timezone
] )Содержание
- DateTimeImmutable::add — Добавляет указанное количество дней, месяцев, лет, часов, минут и секунд.
- DateTimeImmutable::__construct — Возвращает новый объект DateTimeImmutable
- DateTimeImmutable::createFromFormat — Возвращает новый объект DateTimeImmutable, отформатированный согласно переданному формату
- DateTimeImmutable::createFromMutable — Returns new DateTimeImmutable object encapsulating the given DateTime object
- DateTimeImmutable::getLastErrors — Возвращает предупреждения и ошибки
- DateTimeImmutable::modify — Создает новый объект с измененной временной меткой
- DateTimeImmutable::__set_state — Обработчик __set_state
- DateTimeImmutable::setDate — Устанавливает дату
- DateTimeImmutable::setISODate — Устанавливает дату в формате ISO
- DateTimeImmutable::setTime — Устанавливает время
- DateTimeImmutable::setTimestamp — Устанавливает дату и время по переданной временной метке Unix
- DateTimeImmutable::setTimezone — Устанавливает временную зону
- DateTimeImmutable::sub — Вычитает переданное количество дней, месяцев, лет, часов, минут и секунд
Коментарии
Here's a simple example on how this class works :
// Create a DateTimeImmutable Object
$date = new DateTimeImmutable('2000-01-01');
// "Change" that object and assign it's value to a new variable
$date2 = $date->add(new DateInterval('P6M5DT24H'));
// Check out the content of the two variables
echo $date->format('Y-m-d') . "\n";
// 2000-01-01
echo $date2->format('Y-m-d') . "\n";
// 2000-07-07
class MyDateTime extends DateTimeImmutable
{
public function addDay(int $amount): MyDateTime
{
return $this->add(new DateInterval("P" . $amount . "D"));
}
}
addDay will return DateTimeImmutable not MyDateTime. It looks like there is no "return static;"
i wish i would be
Note: If you are trying to get 02.29 for non leap year it will return 03.01
Example:
<?php
new DateTimeImmutable('2017-02-29') // 2017-03-01
?>