Klassen DateTimeImmutable

Klassen DateTimeImmutable er den uforanderlige modpart til DateTime. Den opretter et nyt objekt ved enhver modificering, hvilket gør den mere forudsigelig og sikker at arbejde med.

Nuværende tidspunkt

Lad os oprette et DateTimeImmutable-objekt med den nuværende dato og tid:

php<?php
  $date = new DateTimeImmutable();
?>

Specifik dato

Lad os oprette et DateTimeImmutable-objekt med en angivet dato:

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

Specifik dato og tid

Lad os oprette et DateTimeImmutable-objekt med en angivet dato og tid:

php<?php
  $date = new DateTimeImmutable('2025-12-31 12:59:59');
?>

Formatering af output

Den oprettede dato kan udskrives i et specificeret format ved hjælp af metoden format. Lad os gøre dette for det nuværende tidspunkt:

php<?php
  $date = new DateTimeImmutable();
  echo $date->format('Y-m-d H:i:s');
?>

Resultat (vil ændre sig afhængigt af udførelsestidspunktet):

php'2025-11-15 14:25:00'

Formatering af angivet dato

Lad os formatere en angivet dato:

php<?php
  $date = new DateTimeImmutable('2025-12-31');
  echo $date->format('d.m.Y');
?>

Resultat af kodeudførelse:

php'31.12.2025'

Tilføjelse af interval

Tilføjelse af et interval til en dato sker via metoden add:

php<?php
  $date = new DateTimeImmutable('2025-05-15');
  $interval = new DateInterval('P10D'); // 10 dage
  $newDate = $date->add($interval);
  echo $newDate->format('Y-m-d');
?>

Resultat af kodeudførelse:

php'2025-05-25'

Subtrahering af interval

Subtrahering af et interval fra en dato sker via metoden sub:

php<?php
  $date = new DateTimeImmutable('2025-05-15');
  $interval = new DateInterval('P1M2D'); // 1 måned og 2 dage
  $newDate = $date->sub($interval);
  echo $newDate->format('Y-m-d');
?>

Resultat af kodeudførelse:

php'2025-04-13'

Indstilling af ny dato

Man kan indstille en ny dato for et DateTimeImmutable-objekt. Dette gøres via metoden setDate:

php<?php
  $date = new DateTimeImmutable();
  $newDate = $date->setDate(2024, 12, 31);
  echo $newDate->format('Y-m-d');
?>

Resultat af kodeudførelse:

php'2024-12-31'

Indstilling af tid

Man kan indstille en ny tid for et DateTimeImmutable-objekt. Dette gøres via metoden setTime:

php<?php
  $date = new DateTimeImmutable();
  $newDate = $date->setTime(15, 30, 0);
  echo $newDate->format('H:i:s');
?>

Resultat af kodeudførelse:

php'15:30:00'

Sammenligning af datoer

Man kan sammenligne objekter med datoer:

php<?php
  $date1 = new DateTimeImmutable('2025-01-01');
  $date2 = new DateTimeImmutable('2025-02-01');
  
  if ($date1 < $date2) {
    echo '+++';
  } else {
    echo '---';
  }
?>

Oprettelse af objekt med tidszone

Ved oprettelse af et DateTimeImmutable-objekt kan man angive en tidszone:

php<?php
  $timeZone = new DateTimeZone('Europe/Moscow');
  $date = new DateTimeImmutable('2025-12-31 23:59:59', $timeZone);
  
  echo $date->format('Y-m-d H:i:s e');
?>

Resultat af kodeudførelse:

php'2025-12-31 23:59:59 Europe/Moscow'

Se også