Η Κλάση DateInterval
Η κλάση DateInterval επιτρέπει την εργασία με χρονικά διαστήματα στην PHP.
Χρησιμοποιείται για την αποθήκευση της διαφοράς μεταξύ δύο ημερομηνιών ή για τον ορισμό ενός διαστήματος
σε μεθόδους εργασίας με ημερομηνίες. Το διάστημα δημιουργείται σε μια ειδική μορφή.
Σύνταξη
DateInterval::__construct(string $duration)
Μορφή διαστήματος
Η μορφή αποτελείται από το γράμμα P (period)
και τα στοιχεία:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
Σε αυτή τη μορφή: Y - χρόνια, M - μήνες,
D - ημέρες, T - διαχωριστικός χρόνου,
H - ώρες, M - λεπτά, S - δευτερόλεπτα,
W - εβδομάδες.
Πριν από αυτά τα γράμματα πρέπει να γράφεται η αντίστοιχη
τιμή. Για παράδειγμα, το 3Y θα σημαίνει
τρία χρόνια, ενώ το 5Y2M θα σημαίνει
5 χρόνια και 2 μήνες.
Μετά τη δημιουργία, το αντικείμενο DateInterval
θα περιέχει τις ακόλουθες ιδιότητες:
<?php
$interval->y // χρόνια
$interval->m // μήνες
$interval->d // ημέρες
$interval->h // ώρες
$interval->i // λεπτά
$interval->s // δευτερόλεπτα
$interval->f // μικροδευτερόλεπτα
$interval->invert // 1 εάν το διάστημα είναι αρνητικό
$interval->days // αριθμός ημερών (εάν δημιουργήθηκε μέσω diff())
?>
Ας δούμε τη λειτουργία του διαστήματος σε παραδείγματα:
Παράδειγμα
Ας δημιουργήσουμε ένα διάστημα 1 ώρας, 45 λεπτών και 30 δευτερολέπτων:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Παράδειγμα
Ας δημιουργήσουμε ένα διάστημα 3 εβδομάδων και 2 ημερών:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Παράδειγμα
Ας δημιουργήσουμε ένα διάστημα 5 μηνών, 10 ημερών και 6 ωρών:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Παράδειγμα
Ας δημιουργήσουμε ένα διάστημα 2 ετών και 15 λεπτών:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Παράδειγμα
Ας δημιουργήσουμε ένα διάστημα 1 ημέρας, 12 ωρών και 30 δευτερολέπτων:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Παράδειγμα
Ας δημιουργήσουμε ένα αρνητικό διάστημα 1 έτους και 3 μηνών (διάστημα προς τα πίσω):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Παράδειγμα
Ας δημιουργήσουμε ένα αρνητικό διάστημα 2 ωρών, 30 λεπτών (διάστημα προς τα πίσω):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Παράδειγμα
Ας προσθέσουμε ένα διάστημα στην τρέχουσα ημερομηνία:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
'2023-01-11'
Παράδειγμα
Ας υπολογίσουμε τη διαφορά μεταξύ δύο ημερομηνιών:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m μήνες %d ημέρες');
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
'1 μήνες 14 ημέρες'
Δείτε επίσης
-
η κλάση
DateTime,
που αναπαριστά ημερομηνία και ώρα -
η κλάση
DateTimeZone,
που αναπαριστά μια ζώνη ώρας