Načrtovanje in razvoj spletnih aplikacij

Objekt Date v PHP

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,
  • DateTime ali DateTimeImmutable – 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);
?>
Danes je 10.04.2026
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 m in i,
  • napačno pričakovanje, da časovna značka sama vsebuje lokalni časovni pas,
  • uporaba neustreznega formata izpisa,
  • neizkoriščanje razreda DateTime ali DateTimeImmutable v sodobnejši kodi.

Pozor: Pri funkciji date() znak m pomeni mesec, znak i pa minute. To je ena najpogostejših napak pri zapisovanju formata.