(PHP 4, PHP 5, PHP 7)
mktime — Obține timestamp-ul Unix pentru o dată și oră
$hour
= date("H")
[, int $minute
= date("i")
[, int $second
= date("s")
[, int $month
= date("n")
[, int $day
= date("j")
[, int $year
= date("Y")
[, int $is_dst
= -1
]]]]]]] ) : intÎ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.
hour
Numărul orei relativ cu începutul zilei determinat de
month
, day
și
year
.
Valorile negative se referă la ora înainte de miezul nopții a zilei în cauză.
Valorile mai mari decât 23 se referă la ora corespunzătoare a zilei (zilelor) următoare.
minute
Numărul minutului relativ cu începutul orei determinat de
hour
.
Valorile negative se referă la minutul orei precedente.
Valorile mai mari decât 59 se referă la minutul corespunzător a orei
(orelor) următoare.
second
Numărul de secunde relativ cu începutul minutului determinat de
minute
.
Valorile negative se referă la secunda minutului precedent.
Valorile mai mari decât 59 se referă la secunda corespunzătoare ale
minutului (minutelor) următoare.
month
Numărul lunii relativ cu sfârșitul anului precedent. Valorile de la 1 până la 12 se referă la lunile normale ale anului în cauză. Valorile mai mici decât 1 (inclusiv valorile negative) se referă la lunile anului precedent în ordine inversă, deci 0 este Decembrie, -1 este Noiembrie, etc. Valorile mai mari decât 12 se referă la luna corespunzătoare a anului (anilor) următor.
day
Numărul zilei relativ cu sfârșitul lunii precedente. Valorile de la 1 până la 28, 29, 30 sau 31 (în dependență de lună) se referă la zilele normale ale lunii în cauză. Valorile mai mici decât 1 (inclusiv valorile negative) se referă la zilele lunii precedente, deci 0 este ultima zi a lunii precedente, -1 este penultima zi, etc. Valorile mai mari decât numărul de zile din luna respectivă se referă la ziua corespunzătoare din luna (lunile) următoare.
year
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).
is_dst
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 învechit. În consecința acestui fapt trebuie utilizate noile facilități de gestiune a fusului orar.
Notă:
Acest parametru a fost eliminat în PHP 7.0.0.
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()
Versiune | Descriere |
---|---|
7.0.0 |
Parametrul is_dst a fost eliminat.
|
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
|
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
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.