DateTimeImmutable::modify

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

DateTimeImmutable::modifyErzeugt ein neues Objekt mit geändertem Zeitstempel

Beschreibung

public DateTimeImmutable::modify(string $modifier): DateTimeImmutable|false

Erzeugt ein neues DateTimeImmutable-Objekt mit einem geänderten Zeitstempel. Das ursprüngliche Objekt wird nicht verändert.

Parameter-Liste

modifier

Ein Datums/Zeit Zeichenkette. Gültige Formate werden unter Datums- und Zeitformate erläutert.

Rückgabewerte

Gibt ein neues geändertes DateTimeImmutable-Objekt zurück. Bei einem Fehler wird false zurückgegeben.

Fehler/Exceptions

Wenn eine ungültige Datum/Uhrzeit-Zeichenkette übergeben wird, wird eine DateMalformedStringException geworfen. Vor PHP 8.3 wurde eine Warnung ausgegeben.

Changelog

Version Beschreibung
8.3.0 Wirft nun eine DateMalformedStringException, statt eine Warnung auszugeben, wenn eine ungültige Zeichenkette übergeben wird.

Beispiele

Beispiel #1 DateTimeImmutable::modify()-Beispiel

Objektorientierter Stil

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

Die obigen Bespiele erzeugen folgende Ausgabe:

2006-12-13

Beispiel #2 Vorsicht beim Addieren oder Subtrahieren von Monaten

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

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

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

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

2001-01-31
2001-03-03

Siehe auch

add a note add a note

User Contributed Notes 1 note

up
3
dmytro dot sokil at gmail dot com
6 years ago
To modify milliseconds and microseconds use next formats:

<?php
$a
= new \DateTimeImmutable('2018-01-01 00:00:00.000');
$b = $a->modify('9 msec');
var_dump($b->format('Y-m-d H:i:s.u'));
?>

Returns string(26) "2018-01-01 00:00:00.009000"

<?php
$a
= new \DateTimeImmutable('2018-01-01 00:00:00.000');
$b = $a->modify('9 usec');
var_dump($b->format('Y-m-d H:i:s.u'));
?>

Returns "2018-01-01 00:00:00.000009"
To Top