PHP Conference Nagoya 2025

DateTime::modify

date_modify

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

DateTime::modify -- date_modifyИзменение временной метки

Описание

Объектно-ориентированный стиль

public DateTime::modify(string $modifier): DateTime

Процедурный стиль

Метод изменяет метку времени объекта DateTime путём добавления или вычитания времени в формате, который принимает метод DateTimeImmutable::__construct().

Список параметров

object

Только для процедурного стиля: объект DateTime, который возвращает функция date_create(). Функция изменяет этот объект.

modifier

Строка даты и времени. Объяснение корректных форматов дано в разделе Форматы даты и времени.

Возвращаемые значения

Метод возвращает новый экземпляр даты и времени DateTime, если выполнился успешно. Процедурный стиль возвращает false, если возникла ошибка.

Ошибки

Только для объектно-ориентированного API-интерфейса: метод выбрасывает исключение DateMalformedStringException, если передали строку с недопустимой датой и временем.

Список изменений

Версия Описание
8.3.0 Метод DateTime::modify() теперь выбрасывает исключение DateMalformedStringException, если передали строку в недопустимом формате. Раньше метод возвращал значение false и выдавал предупреждение. Функция date_modify() не изменилась.

Примеры

Пример #1 Пример использования DateTime::modify()

Объектно-ориентированный стиль

<?php
$date
= new DateTime('2006-12-12');
$date->modify('+1 day');
echo
$date->format('Y-m-d');
?>

Процедурный стиль

<?php
$date
= date_create('2006-12-12');
date_modify($date, '+1 day');
echo
date_format($date, 'Y-m-d');
?>

Результат выполнения приведённых примеров:

2006-12-13

Пример #2 Будьте осторожны при добавлении и вычитании месяцев

<?php
$date
= new DateTime('2000-12-31');

$date->modify('+1 month');
echo
$date->format('Y-m-d') . "\n";

$date->modify('+1 month');
echo
$date->format('Y-m-d') . "\n";
?>

Результат выполнения приведённого примера:

2001-01-31
2001-03-03

Пример #3 Поддерживаются все форматы даты и времени

<?php
$date
= new DateTime('2020-12-31');

$date->modify('July 1st, 2023');
echo
$date->format('Y-m-d H:i') . "\n";

$date->modify('Monday next week');
echo
$date->format('Y-m-d H:i') . "\n";

$date->modify('17:30');
echo
$date->format('Y-m-d H:i') . "\n";
?>

Результат выполнения приведённого примера:

2023-07-01 00:00
2023-07-03 00:00
2023-07-03 17:30

Смотрите также

  • strtotime() - Преобразовывает текстовое представление даты на английском языке в метку времени Unix
  • DateTimeImmutable::modify() - Создаёт новый объект с изменённой временной меткой
  • DateTime::add() - Изменяет объект DateTime, добавляя количество дней, месяцев, лет, часов, минут и секунд
  • DateTime::sub() - Вычитает дни, месяцы, годы, часы, минуты и секунды из объекта DateTime
  • DateTime::setDate() - Устанавливает дату
  • DateTime::setISODate() - Устанавливает дату в формате ISO
  • DateTime::setTime() - Устанавливает время
  • DateTime::setTimestamp() - Устанавливает дату и время на основе метки времени Unix
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top