(PHP 4, PHP 5)
mktime — Obține timestamp-ul Unix pentru o dată și oră
Întoarce timestamp-ul Unix ce corespunde argumentelor furnizate. Acest timestamp este un integer lung conținând numărul de secunde între Epoca Unix (1 Ianuarie 1970 00:00:00 GMT) și timpul specificat.
Argumentele pot fi omise unul după altul de la dreapta spre atânga; orice argument omis va fi stabilit la valoarea curentă în corespundere cu data și ora locale.
Notă:
Începând cu PHP 5.1, când este apelat fără argumente, mktime() aruncă o notificare E_STRICT: utilizați funcția time() în loc.
Numărul orei.
Numărul minutei.
Numărul de secunde de la începutul minutei.
Numărul lunii.
Numărul zilei.
Numărul anului. Poate fi format din două sau din patru cifre. Valorile 0-69 corespund anilor 2000-2069, iar 70-100 corespund 1970-2000. Pe sistemele unde time_t este un întreg pe 32 biți cu semn, cum este pe majoritatea sistemelor contemporane, domeniul valid pentru year este între 1901 și 2038. Însă înainte de PHP 5.1.0 acest domeniu era limitat între 1970 și 2038 pe unele sisteme (de ex. Windows).
Acest parametru poate fi stabilit în 1 dacă este în efect timpul de vară (daylight savings time (DST)), 0 dacă nu, sau -1 (valoarea implicită) dacă nu se cunoaște dacă este în efect timpul de vară. Dacă nu se cunoaște, PHP încearcă singur să determine acest lucru. Aceasta poate cauza rezultate neașteptate (dar nu neapărat incorecte). Unele ore nu sunt valide dacă DST este activat pe sistemul unde rulează PHP, sau dacă parametrul is_dst este stabilit în 1. Dacă DST este activat de ex. la 2:00, toate orele între 2:00 și 3:00 sunt invalide și mktime() întoarce o valoare nedefinită (de obicei negativă). Unele sisteme (de ex. Solaris 8) activează DST la miezul nopții, de aceea ora 0:30 în ziua când DST este activat este evaluată ca 23:30 a zilei precedente.
Notă:
Începând cu PHP 5.1.0, acest parametru a devenit dezaprobat. În rezultat noile facilități de gestiune a fusului orar trebuie utilizate în loc.
mktime() întoarce timestamp-ul Unix al argumentelor furnizate. Dacă argumentele nu sunt valide, funcția întoarce FALSE (înainte de PHP 5.1 întorcea -1).
Fiecare apel al unei funcții de dată/oră va genera o E_NOTICE dacă zona orară nu este validă și/sau un mesaj E_STRICT sau E_WARNING dacă se utilizează setările sistemului sau variabila de mediu TZ. Vedeți de asemenea date_default_timezone_set()
Versiunea | Descriere |
---|---|
5.3.0 | mktime() acum emite o notificare E_DEPRECATED dacă este utilizat parametrul is_dst. |
5.1.0 | Parametrul is_dst a devenit dezapreciat. Funcția a fost modificată să întoarcă FALSE în caz de eroare, în loc de -1. Funcția a fost modificată să accepte anul, luna și ziua cu valorile zero. |
5.1.0 | Când este apelată fără argumente, mktime() aruncă o notificare E_STRICT. Utilizați funcția time() în loc. |
5.1.0 | Acum generează erori ale zonei orare de tip E_STRICT și E_NOTICE. |
Example #1 Exemplu simplu mktime()
<?php
// Stabilește fusul orar implicit pentru a fi utilizat. Disponibil începând cu PHP 5.1
date_default_timezone_set('UTC');
// Afișează: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
// Afișează ceva de felul: 2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006));
?>
Example #2 Exemple mktime()
mktime() este utilă pentru a face operații aritmetice și de validare a datelor, deoarece ea va calcula automat valoarea corectă pentru vlorile introduse din afara domeniului. De exemplu, fiecare rând ce urmează produce string-ul "Jan-01-1998".
<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
?>
Example #3 Ultima zi a lunii următoare
Ultima zi a oricărei luni poate fi exprimată ca ziua "0" a lunii următoare, dar nu ziua -1. Ambele exemple ce urmează vor produce string-ul "Ultima zi din Februarie 2000 este: 29".
<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("Ultima zi din Februarie 2000 este: %d", $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("Ultima zi din Februarie 2000 este: %d", $lastday);
?>
Înainte de PHP 5.1.0, timestamp-urile negative nu erau susținute în unele sisteme, inclusiv nici într-o versiune cunoscută Windows. De aceea domeniul valid al anilor era limitat între 1970 și 2038.