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

shipDay
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";
  1. $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
  1. $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"));
  2. $status ← early

    6if ($shipDateTimeImmutable < $dueDateTimeImmutable) {7    $status→ early = "early";8} elseif ($ship > $due) {
  3. echo "shipDay=" . $shipDay . " ";

    14echo "shipDay=" . $shipDay2026-05-30 . "\n";15echo "status=" . $statusearly . "\n";
    outputshipDay=2026-05-30
    status=early
  1. $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