DateTimeImmutable represents a date or time without changing the original object.

fixed date Use fixed input dates in examples so replay is deterministic.

Create Date

day
create_date.php
Replay: real traced execution (multi-file project)
<?php
$day = "2026-05-31";
$date = new DateTimeImmutable($day, new DateTimeZone("UTC"));
$label = $date->format("Y-m-d");

echo "day=" . $day . "\n";
echo "label=" . $label . "\n";
<?php
$day = "2026-06-01";
$date = new DateTimeImmutable($day, new DateTimeZone("UTC"));
$label = $date->format("Y-m-d");

echo "day=" . $day . "\n";
echo "label=" . $label . "\n";
<?php
$day = "2026-12-25";
$date = new DateTimeImmutable($day, new DateTimeZone("UTC"));
$label = $date->format("Y-m-d");

echo "day=" . $day . "\n";
echo "label=" . $label . "\n";
  1. $day ← 2026-05-31, $date ← DateTimeImmutable, $label ← 2026-05-31

    1<?php2$day→ 2026-05-31 = "2026-05-31"; //@day="2026-06-01", "2026-12-25"3$date→ DateTimeImmutable = new DateTimeImmutable($day2026-05-31, new DateTimeZone("UTC"));4$label→ 2026-05-31 = $dateDateTimeImmutable->format("Y-m-d");56echo "day=" . $day2026-05-31 . "\n";7echo "label=" . $label2026-05-31 . "\n";
    outputday=2026-05-31
    label=2026-05-31
  1. $day ← 2026-06-01, $date ← DateTimeImmutable, $label ← 2026-06-01

    1<?php2$day→ 2026-06-01 = "2026-06-01";3$date→ DateTimeImmutable = new DateTimeImmutable($day2026-06-01, new DateTimeZone("UTC"));4$label→ 2026-06-01 = $dateDateTimeImmutable->format("Y-m-d");56echo "day=" . $day2026-06-01 . "\n";7echo "label=" . $label2026-06-01 . "\n";
    outputday=2026-06-01
    label=2026-06-01
  1. $day ← 2026-12-25, $date ← DateTimeImmutable, $label ← 2026-12-25

    1<?php2$day→ 2026-12-25 = "2026-12-25";3$date→ DateTimeImmutable = new DateTimeImmutable($day2026-12-25, new DateTimeZone("UTC"));4$label→ 2026-12-25 = $dateDateTimeImmutable->format("Y-m-d");56echo "day=" . $day2026-12-25 . "\n";7echo "label=" . $label2026-12-25 . "\n";
    outputday=2026-12-25
    label=2026-12-25