<?php
// Mutable
$today = new DateTime;
$yesterday = $today->sub(new DateInterval('P1D')); // subtract one day
$tomorrow = $today->add(new DateInterval('P1D')); // add one day
// $today, $yesterday and $tomorrow are all the same date! 🤯
echo "Today is ".$today->format('Y-m-d'). "\n";
echo "Yesterday is ".$yesterday->format('Y-m-d'). "\n";
echo "Tomorrow is ".$tomorrow->format('Y-m-d'). "\n";
// Immutable
$today = new DateTimeImmutable;
$yesterday = $today->sub(new DateInterval('P1D')); // subtract one day
$tomorrow = $today->add(new DateInterval('P1D')); // add one day
// $today, $yesterday and $tomorrow are all the same date! 🤯
echo "With DateTimeImmutable: Today is ".$today->format('Y-m-d'). "\n";
echo "With DateTimeImmutable: Yesterday is ".$yesterday->format('Y-m-d'). "\n";
echo "With DateTimeImmutable: Tomorrow is ".$tomorrow->format('Y-m-d'). "\n";
Today is 2020-12-03
Yesterday is 2020-12-03
Tomorrow is 2020-12-03
With DateTimeImmutable: Today is 2020-12-03
With DateTimeImmutable: Yesterday is 2020-12-02
With DateTimeImmutable: Tomorrow is 2020-12-04
Output for 5.3.0 - 5.3.29, 5.4.0 - 5.4.45
Today is 2020-12-03
Yesterday is 2020-12-03
Tomorrow is 2020-12-03
Fatal error: Class 'DateTimeImmutable' not found in /in/PQoan on line 14
Process exited with code 255.
Output for 5.2.0 - 5.2.17
Fatal error: Call to undefined method DateTime::sub() in /in/PQoan on line 5
Process exited with code 255.
Output for 5.0.0 - 5.0.5, 5.1.0 - 5.1.6
Fatal error: Class 'DateTime' not found in /in/PQoan on line 4
Process exited with code 255.
Output for 4.3.2 - 4.3.11, 4.4.0 - 4.4.9
Fatal error: Cannot instantiate non-existent class: datetime in /in/PQoan on line 4
Process exited with code 255.
Output for 4.3.0 - 4.3.1
Fatal error: Cannot instantiate non-existent class: datetime in /in/PQoan on line 4