V PHP lahko datum in čas pridobimo, oblikujemo in prikažemo na različne načine. Starejši, še vedno zelo uporaben pristop temelji na funkcijah time() in date(), v sodobnejši kodi pa pogosto uporabljamo razreda DateTime ali DateTimeImmutable.
Pomni: Funkcija time() vrne časovno značko, to je število sekund od 1. januarja 1970. Funkcija date() pa to vrednost oblikuje v berljiv izpis.
Osnovne funkcije za datum in čas
time()– vrne trenutno časovno značko,date(format, timestamp)– oblikuje datum ali čas glede na izbrani format,date_default_timezone_set()– nastavi privzeti časovni pas,DateTimealiDateTimeImmutable– sodobnejši objektni pristop za delo z datumom in časom.
Pozor: Če časovni pas ni pravilno nastavljen, lahko PHP izpiše napačen lokalni čas. Zato je dobro v skripti ali v nastavitvah strežnika določiti ustrezen časovni pas.
Nastavitev časovnega pasu
Pred delom z datumom je priporočljivo določiti časovni pas. Tako bodo izpisi datuma in ure usklajeni z okoljem, v katerem aplikacija deluje.
<?php
date_default_timezone_set('Europe/Ljubljana');
?>
Pomni: Časovni pas lahko nastavimo v skripti z date_default_timezone_set() ali pa v konfiguraciji PHP z nastavitvijo date.timezone.
Primer uporabe funkcij time() in date()
Če želimo izpisati trenutni datum ali uro, lahko uporabimo trenutno časovno značko in jo oblikujemo z izbranim formatom.
<?php
date_default_timezone_set('Europe/Ljubljana');
$trenutniCas = time();
echo 'Danes je ' . date('d.m.Y', $trenutniCas) . '<br>';
echo 'Trenutna ura je ' . date('H:i:s') . '<br>';
echo 'Timestamp 1234567890 je ' . date('d.m.Y H:i:s', 1234567890);
?>
Trenutna ura je 22:35:21
Timestamp 1234567890 je 14.02.2009 00:31:30
Sodobnejši pristop z objektom DateTimeImmutable
V sodobni PHP kodi je pogosto priporočljivo uporabiti razred DateTimeImmutable, saj je delo s časovnimi pasovi in oblikovanjem datuma preglednejše.
<?php
$datum = new DateTimeImmutable('now', new DateTimeZone('Europe/Ljubljana'));
echo $datum->format('d.m.Y') . '<br>';
echo $datum->format('H:i:s');
?>
Pomni: Razred DateTimeImmutable je posebej uporaben, kadar želimo delati z datumom in uro skupaj s časovnim pasom.
Pogosti znaki za oblikovanje datuma in časa
| Element | Opis | |
|---|---|---|
| Čas | H | ura v 24-urnem formatu z vodilno ničlo, od 00 do 23 |
| i | minute z vodilno ničlo, od 00 do 59 | |
| s | sekunde z vodilno ničlo, od 00 do 59 | |
| a | oznaka am ali pm | |
| Dan | d | dan v mesecu z vodilno ničlo, od 01 do 31 |
| j | dan v mesecu brez vodilne ničle, od 1 do 31 | |
| D | okrajšano ime dneva v angleščini | |
| l | polno ime dneva v angleščini | |
| Mesec | m | številka meseca z vodilno ničlo, od 01 do 12 |
| n | številka meseca brez vodilne ničle, od 1 do 12 | |
| M | okrajšano ime meseca v angleščini | |
| F | polno ime meseca v angleščini | |
| Leto | Y | štirimestni zapis leta, na primer 2026 |
| y | dvoštevilčni zapis leta, od 00 do 99 | |
| L | prestopno leto vrne 1, sicer 0 | |
| Ostalo | U | Unixova časovna značka |
| O | odmik od časa UTC v obliki, na primer +0100 ali +0200 | |
Pogoste napake
- izpuščanje nastavitve pravilnega časovnega pasu,
- zamenjevanje znakov za mesec in minute, na primer
mini, - napačno pričakovanje, da časovna značka sama vsebuje lokalni časovni pas,
- uporaba neustreznega formata izpisa,
- neizkoriščanje razreda
DateTimealiDateTimeImmutablev sodobnejši kodi.
Pozor: Pri funkciji date() znak m pomeni mesec, znak i pa minute. To je ena najpogostejših napak pri zapisovanju formata.