Η Κλάση DateTime

Η κλάση DateTime είναι το κύριο εργαλείο για την εργασία με ημερομηνίες και ώρα σε αντικειμενοστρεφή στυλ. Επιτρέπει τη δημιουργία αντικειμένων ημερομηνίας/ώρας, την τροποποίησή τους και τη μορφοποίηση της εξόδου.

Τρέχουσα χρονική στιγμή

Ας δημιουργήσουμε ένα αντικείμενο DateTime με την τρέχουσα ημερομηνία και ώρα:

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

Συγκεκριμένη ημερομηνία

Ας δημιουργήσουμε ένα αντικείμενο DateTime με μια καθορισμένη ημερομηνία:

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

Συγκεκριμένη ημερομηνία και ώρα

Ας δημιουργήσουμε ένα αντικείμενο DateTime με καθορισμένη ημερομηνία και ώρα:

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

Μορφοποίηση εξόδου

Η δημιουργημένη ημερομηνία μπορεί να εκτυπωθεί σε μια δεδομένη μορφή χρησιμοποιώντας τη μέθοδο format. Ας το κάνουμε για την τρέχουσα χρονική στιγμή:

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

Αποτέλεσμα (θα αλλάζει ανάλογα με τη στιγμή εκτέλεσης):

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

Μορφοποίηση καθορισμένης ημερομηνίας

Ας μορφοποιήσουμε μια καθορισμένη ημερομηνία:

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

Αποτέλεσμα εκτέλεσης του κώδικα:

php'31.12.2025'

Προσθήκη διαστήματος

Η προσθήκη ενός διαστήματος σε μια ημερομηνία πραγματοποιείται μέσω της μεθόδου add:

php<?php
  $date = new DateTime('2025-05-15');
  $interval = new DateInterval('P10D'); // 10 ημέρες
  $date->add($interval);
  echo $date->format('Y-m-d');
?>

Αποτέλεσμα εκτέλεσης του κώδικα:

php'2025-05-25'

Αφαίρεση διαστήματος

Η αφαίρεση ενός διαστήματος από μια ημερομηνία πραγματοποιείται μέσω της μεθόδου sub:

php<?php
  $date = new DateTime('2025-05-15');
  $interval = new DateInterval('P1M2D'); // 1 μήνας και 2 ημέρες
  $date->sub($interval);
  echo $date->format('Y-m-d');
?>

Αποτέλεσμα εκτέλεσης του κώδικα:

php'2025-04-13'

Ορισμός νέας ημερομηνίας

Μπορεί να οριστεί μια νέα ημερομηνία για το αντικείμενο DateTime. Αυτό γίνεται μέσω της μεθόδου setDate:

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

Αποτέλεσμα εκτέλεσης του κώδικα:

php'2025-12-31'

Ορισμός ώρας

Μπορεί να οριστεί μια νέα ώρα για το αντικείμενο DateTime. Αυτό γίνεται μέσω της μεθόδου setTime:

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

Αποτέλεσμα εκτέλεσης του κώδικα:

php'15:30:00'

Σύγκριση ημερομηνιών

Μπορούν να συγκριθούν αντικείμενα με ημερομηνίες:

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

Διαφορά μεταξύ ημερομηνιών

Χρησιμοποιώντας τη μέθοδο diff μπορεί να υπολογιστεί η διαφορά μεταξύ ημερομηνιών. Η διαφορά επιστρέφεται ως αντικείμενο DateInterval:

php<?php
  $date1 = new DateTime('2023-01-01');
  $date2 = new DateTime('2023-02-15');
  
  $interval = $date1->diff($date2);
  echo $interval->format('%m μήνες %d ημέρες');
?>

Αποτέλεσμα εκτέλεσης του κώδικα:

php'1 μήνες 14 ημέρες'

Ζώνη ώρας

Κατά τη δημιουργία ενός αντικειμένου DateTime μπορεί να καθοριστεί η ζώνη ώρας:

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

Αποτέλεσμα εκτέλεσης του κώδικα:

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

Δείτε επίσης

  • η κλάση DateTimeImmutable,
    που δημιουργεί μια αμετάβλητη ημερομηνία
  • η κλάση DateInterval,
    που ορίζει ένα χρονικό διάστημα
  • η κλάση DateTimeZone,
    που ορίζει μια ζώνη ώρας