mktime

(PHP 4, PHP 5, PHP 7)

mktimeObține timestamp-ul Unix pentru o dată și oră

Descrierea

mktime ([ int $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.

Note

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.

Parametri

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.

Valorile întoarse

mktime() întoarce timestamp-ul Unix al argumentelor furnizate. Dacă argumentele nu sunt valide, funcția întoarce FALSE (înainte de PHP 5.1 întorcea -1).

Erori/Excepții

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()

Istoricul schimbărilor

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 E_STRICT și E_NOTICE.

Exemple

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(000712000));

// Afișează ceva de felul: 2006-04-05T01:02:03+00:00
echo date('c'mktime(123452006));
?>

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(00012321997));
echo 
date("M-d-Y"mktime(0001311997));
echo 
date("M-d-Y"mktime(000111998));
echo 
date("M-d-Y"mktime(0001198));
?>

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(000302000);
echo 
strftime("Ultima zi din Februarie 2000 este: %d"$lastday);
$lastday mktime(0004, -312000);
echo 
strftime("Ultima zi din Februarie 2000 este: %d"$lastday);
?>

Note

Precauţie

Î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.

A se vedea și

  • checkdate() - Validează o dată Gregoriană
  • gmmktime() - Obține momentul de timp Unix pentru o dată GMT
  • date() - Formatează o oră/dată
  • time() - Întoarce timpul curent Unix