Dates and Time Concepts
Compare Dates
Date objects can be compared to decide whether an event is early, on time, or late.
comparison
Compare fixed date objects and convert the result into a clear scalar label.
Compare Dates
compare_dates.php
Replay: real traced execution (multi-file project)
<?php
$shipDay = "2026-06-05";
$due = new DateTimeImmutable("2026-06-05", new DateTimeZone("UTC"));
$ship = new DateTimeImmutable($shipDay, new DateTimeZone("UTC"));
if ($ship < $due) {
$status = "early";
} elseif ($ship > $due) {
$status = "late";
} else {
$status = "on_time";
}
echo "shipDay=" . $shipDay . "\n";
echo "status=" . $status . "\n";
<?php
$shipDay = "2026-05-30";
$due = new DateTimeImmutable("2026-06-05", new DateTimeZone("UTC"));
$ship = new DateTimeImmutable($shipDay, new DateTimeZone("UTC"));
if ($ship < $due) {
$status = "early";
} elseif ($ship > $due) {
$status = "late";
} else {
$status = "on_time";
}
echo "shipDay=" . $shipDay . "\n";
echo "status=" . $status . "\n";
<?php
$shipDay = "2026-06-10";
$due = new DateTimeImmutable("2026-06-05", new DateTimeZone("UTC"));
$ship = new DateTimeImmutable($shipDay, new DateTimeZone("UTC"));
if ($ship < $due) {
$status = "early";
} elseif ($ship > $due) {
$status = "late";
} else {
$status = "on_time";
}
echo "shipDay=" . $shipDay . "\n";
echo "status=" . $status . "\n";
$shipDay ← 2026-06-05, $due ← DateTimeImmutable, $ship ← DateTimeImmutable
1<?php2$shipDay→ 2026-06-05 = "2026-06-05"; //@shipDay="2026-05-30", "2026-06-10"3$due→ DateTimeImmutable = new DateTimeImmutable("2026-06-05", new DateTimeZone("UTC"));4$ship→ DateTimeImmutable = new DateTimeImmutable($shipDay2026-06-05, new DateTimeZone("UTC"));56if ($ship < $due) {7 $status = "early";8} elseif ($ship > $due) {9 $status = "late";10} else {11 $status→ on_time = "on_time";12}1314echo "shipDay=" . $shipDay2026-06-05 . "\n";15echo "status=" . $statuson_time . "\n";outputshipDay=2026-06-05 status=on_time
$shipDay ← 2026-05-30, $due ← DateTimeImmutable, $ship ← DateTimeImmutable
1<?php2$shipDay→ 2026-05-30 = "2026-05-30";3$due→ DateTimeImmutable = new DateTimeImmutable("2026-06-05", new DateTimeZone("UTC"));4$ship→ DateTimeImmutable = new DateTimeImmutable($shipDay2026-05-30, new DateTimeZone("UTC"));$status ← early
6if ($shipDateTimeImmutable < $dueDateTimeImmutable) {7 $status→ early = "early";8} elseif ($ship > $due) {echo "shipDay=" . $shipDay . " ";
14echo "shipDay=" . $shipDay2026-05-30 . "\n";15echo "status=" . $statusearly . "\n";outputshipDay=2026-05-30 status=early
$shipDay ← 2026-06-10, $due ← DateTimeImmutable, $ship ← DateTimeImmutable
1<?php2$shipDay→ 2026-06-10 = "2026-06-10";3$due→ DateTimeImmutable = new DateTimeImmutable("2026-06-05", new DateTimeZone("UTC"));4$ship→ DateTimeImmutable = new DateTimeImmutable($shipDay2026-06-10, new DateTimeZone("UTC"));56if ($ship < $due) {7 $status = "early";8} elseif ($ship > $due) {9 $status→ late = "late";10} else {11 $status = "on_time";12}1314echo "shipDay=" . $shipDay2026-06-10 . "\n";15echo "status=" . $statuslate . "\n";outputshipDay=2026-06-10 status=late