Data și ora PHP unix. Primul script PHP: Afișează data și ora

Să ne uităm la o parte din codul dintr-o pagină web reală și să creăm primul nostru script PHP, și anume, vom afișa data și ora curentă pe site-ul nostru. Acest script este folosit destul de des pe site-uri web și cred că va fi util multora.

Să creăm un alt fișier php și să numim acest fișier time.php. Am studiat-o mai devreme, dacă ai uitat, repetă.

Așa că am creat fișierul time.php și am plasat acest fișier în folderul myphp creat anterior la . Am studiat acest subiect în lecție

Deschideți codul fișierului time.php și între etichete Și scrie urmatorul cod: Listarea 1:

Listarea 1.

Astăzi:

Ora curentă

Hai să lansăm Server local, apelați bara de adresa adresa browserului http://localhost/myphp/time.phpși apăsați Enter. Și vedem această imagine:

Vă atrag atenția asupra faptului că în acest caz, este afișată ora curentă a serverului, acestea. dacă, de exemplu, serverul pe care „locuiește” site-ul dvs. este situat într-o altă țară și ora actuală diferă de Moscova, atunci valoarea oră afișată va diferi și de Moscova.

Să ne uităm la cod Listare 1. Obisnuit etichete de text "Astăzi" Și " Ora curentă„ nu sunt procesate de preprocesorul PHP și sunt scoase ca „este”. În loc de aceste intrări, puteți scrie orice text, de exemplu doar Data sau Timp etc.

Și aici este codul php inclus în descriptoriÎnainte de a fi dat browserului, acesta este procesat de PHP.

După cum probabil ați înțeles deja, funcția de dată în PHP responsabil pentru data și ora de ieșire. ÎN parantezele Sunt indicate valorile de afișare a datei și orei. Există o mulțime de astfel de valori în PHP și vom dedica următoarea lecție separată acestei analize și studiului tuturor valorilor posibile.

Operatorul ecou este tradus ca retrage, în acest caz ne referim la afișarea pe ecranul monitorului DataȘi Timpul serverului.

Același rezultat (afișare în browser) poate fi obținut prin plasarea întregului script în interiorul descriptorilor PHP. Uite Lista 2:

Lista 2.

echo „Astăzi:” ;
data ecou (" j F Y ");
ecou "Ora curentă";
echo date("H:i:s");
?>

Toate elementele de text destinate ieșirii trebuie să fie cuprinse între ghilimele. Șiruri de text pot fi închise atât în ​​single cât și ghilimele duble, despre diferență vom vorbi mai târziu. Postari:

ecou „Astăzi”;

ecou „Astăzi”;

sunt complet echivalente și vor apărea la fel.

Caracterul spațiu înainte de ghilimele de închidere este folosit pentru a separa rezultatul funcției de dată de textul din jur. Toate comenzile din PHP sunt întotdeauna separate prin punct și virgulă.

Pentru a afișa Data și Ora pe site, introduceți codul Listarea 1 sau Lista 2 la locul potrivit pe pagina dvs. web. Pentru a adăuga inscripții (Data și Ora) stilul general design site, puteți utiliza.

P.S. Vă reamintesc că dosarul în care plasați Inserări PHP trebuie să aibă extensia .php și, în plus, găzduirea pe care „trăiește” site-ul tău trebuie să suporte PHP (astazi asta este aproape tot

Printre diferitele sarcini de programare, diferite manipulări cu valori de dată și oră sunt destul de comune. Rar sistem automatizat, baza de date se poate descurca fără a stoca informații despre timpul unui anumit proces. Pe lângă simpla adăugare a unei date într-o înregistrare a bazei de date sau afișarea acestei date, există multe sarcini pentru afișarea acestor date în sub diverse forme, verificând dacă ora curentă se potrivește setați cronometrul, calculând perioada dintre două date și multe altele.

Pentru confortul de a lucra cu date, fiecare limbaj de programare are propriul său limbaj tipuri speciale date pentru a stoca valorile datei și orei. Cel mai adesea asta valoare numerica, fie număr întreg, fie virgulă mobilă.

ÎN Funcționează PHP cu o dată, cel mai adesea întâlnește UNIX TIMESTAMP. Aici timpul este stocat ca un număr întreg. Calculul timpului începe la 1 ianuarie 1970. Prin urmare, de exemplu, data și ora 12/11/2014 19:40:00 ar fi reprezentate de numărul 1418316000. Acest număr arată câte secunde au trecut de la data zero de 1 ianuarie 1970, numită Epoca Unix.

Un exemplu de pagină PHP care oferă capacități de conversie a datelor este prezentat pe site-ul web în secțiunea de programe cu programul „Convert data and time format”. Aici puteți crea data dorită în format UNIX TIMESTAMP, precum și aduce acest format într-o formă standard, care poate fi citită de om.

Obținerea orei și datei curente în PHP

Pentru a obține ora actuală a serverului, utilizați funcția

int time(void)

care va returna valoarea în format de marcaj temporal Unix.

timpul ecou(); // scoateți ora curentă în format de marcaj temporal Unix

La prima vedere nu foarte format convenabil pentru o persoană, dar, după cum se știe, decât prezentare mai simplă date, cu atât computerul procesează mai repede aceste valori. De asemenea, stocarea unui număr într-o bază de date este mult mai rentabilă decât oricare format special. De asemenea, PHP funcționează la fel de-a lungul timpului atât pe Unix, cât și Platforma Windows, ceea ce face posibilă utilizarea codului pe oricare dintre aceste platforme.

Convertiți formatul de dată și oră în PHP

Cel mai simplu mecanism pentru conversia unei valori numerice a datei în valori mai ușor de înțeles este oferit de funcția:

matrice getdate()

Ea se întoarce matrice asociativă, care conține informații despre dată. Dacă parametrul timestamp nu este specificat, ora curentă va fi returnată. Această matrice conține următoarele valori:

Matricea rezultată vă permite să afișați valorile în forma dorită:

$date = 1418372345;
$date_mas = getdate($data);
echo $date_mas["mday"] . " . " . $date_mas["lună"] . " . " . $date_mas["an"]; // 12.12.2014


De asemenea, puteți utiliza funcția pentru a converti formatul de dată și oră:

șir data(șir $șablon [, int $unix_timestamp])

Este conceput pentru a introduce data actuală a marcajului de timp Unix în formatul cerut. Parametrul șir $template specifică formatul de ieșire. Parametrul $unix_timestamp poate fi folosit pentru a specifica valoarea timpului cu care să lucrați. Este optional, deci daca nu este specificat va fi folosit Data curentă si timpul.

Formatul este specificat de următoarele valori:

A„înainte” și „după” amiază: „am” sau „pm”
A„înainte” și „după” amiază cu litere mari: "AM sau PM"
dziua lunii din 2 cifre (dacă este mai mică de 10, zero este primul) (de la 01 la 31)
Dziua saptamanii in 3 litere. De exemplu, „Luni” (luni)
jziua lunii, 1-2 cifre fără zerouri inițiale (de la 1 la 31)
Fnumele lunii. De exemplu, „ianuarie”
horă, format de 12 ore (de la 01 la 12)
Horă, format de 24 de ore (de la 00 la 23)
goră, format de 12 ore fără zerouri (de la 1 la 12)
Goră, format de 24 de ore fără zerouri (de la 0 la 23)
iminute (de la 00 la 59)
I (majusculă i)1 dacă trecerea la ora de vara, altfel 0
L1 dacă anul este un an bisect sau 0 dacă nu este un an bisect
Bora în formatul de timp pe Internet ( sistem alternativ numărătoarea inversă a orei zilei) (de la 000 la 999)
Tfusul orar al computerului. De exemplu, MDT
l (L minuscule)zi a săptămânii. De exemplu, „luni”
mlună, două cifre cu zerouri (de la 01 la 12)
nlună, una sau două cifre fără zero (de la 1 la 12)
Mnumele prescurtat al lunii. De exemplu, „Ian”
tnumărul de zile din luna specificată (de la 28 la 31)
ssecunde (de la 0 la 59)
SSufixul numerelor ordinale din două litere din engleză ("st", "nd", "rd" sau "th")
Unumăr întreg de secunde de la începutul epocii UNIX
yan, digital, 2 cifre (14)
Yan, digital, 4 cifre (2014)
znumărul ordinal al zilei din an (de la 0 la 365)
Zcompensare a fusului orar în secunde (-43200 la 43200)
Nnumărul de serie al zilei săptămânii de la 1 (luni) la 7 (duminică) în conformitate cu standardul ISO-8601, (adăugat în PHP 5.1.0)
wnumărul de serie al zilei săptămânii de la 0 (duminică) la 6 (sâmbătă)
Wnumărul de serie al săptămânii din an în conformitate cu standardul ISO-8601; săptămânile încep luni (adăugat în PHP 4.1.0)
onumărul anului conform standardului ISO-8601. Are aceeași semnificație cu Y, cu excepția cazului în care numărul săptămânii ISO (W) este din anul precedent sau următor; atunci se va folosi anul acelei săptămâni. (adăugat în PHP 5.1.0)
ecodul de scară a fusului orar. De exemplu: UTC, GMT, Atlantic/Azore (adăugat în PHP 5.1.0)
Odiferență față de ora Greenwich, în ore. De exemplu: +0200
Pdiferență față de Greenwich Mean Time cu două puncte între ore și minute. De exemplu: +02:00 (adăugat în PHP 5.1.3)
cdata în format standard ISO 8601. De exemplu, 2014-12-12T15:19:21+00:00 (adăugat în PHP 5)
rdata în format » RFC 2822. De exemplu: joi, 21 decembrie 2000 16:01:07 +0200
Unumărul de secunde care au trecut de la începutul epocii Unix (Epoca Unix, 1 ianuarie 1970 00:00:00 GMT)

După cum puteți vedea din listă, puteți obține o mulțime de date utile folosind această funcție. De exemplu:

$date = 1418372345; // data si ora initiala 12/12/2014 11:19:05

echo date("d.m.Y" , $date); // 12/12/2014 (data)
echo date("H:i:s" , $data); // 11:19:05 (ora)
echo date("H:i" , $data); // 11:19 (ora)
echo date("t" , $data); // 31 (numărul de zile dintr-o lună)
echo date("z" , $data); // 345 (numărul ordinal al zilei din an)
echo date("l dS \of F Y h:i:s A" , $data); // Vineri, 12 decembrie 2014, ora 11:19:05

Alte caractere incluse în model vor fi tipărite așa cum sunt pe linie. Dacă trebuie să introduceți un caracter care este utilizat într-o funcție ca cod de format, caracterul „\” este inserat în fața lor. Pentru valoarea „\n” (caracterul de tranziție linie nouă), trebuie să specificați „\\n”. Astfel, puteți scoate un mesaj întreg care conține informații despre dată și oră:

data ecou( „Astăzi este a z-a zi a anului y”, $data); // Astăzi este a 345-a zi a anului 2014

Convertiți data și ora în format de marcaj de timp

Pentru a inversa conversia datei de la format standard Funcția este aplicată la valoarea numerică a marcajului temporal:

int mktime(]]]]]])

Funcția mktime() returnează valoarea timpului Unix corespunzătoare datei și orei specificate de argumentele sale. De exemplu:

$my_date = mktime(10, 30, 0, 12, 12, 2014);

Ar trebui să fiți atenți la ordinea argumentelor funcției: ore, minute, secunde, lună, zi, an.

Cu exceptia formare simplă valorile datei în marca temporală, funcția mktime() poate fi utilizată pentru a efectua aritmetic cu date. Pentru a face acest lucru, puteți introduce pur și simplu argumentele necesare. De exemplu, dacă specificați luna a 14-a, atunci în valoarea finală luna va fi a 2-a, iar valoarea anului va crește cu unu:

$my_day = 12;
$my_month = 12;
$my_year = 2014;

$new_date = mktime(0, 0, 0, $my_month + 5, $my_day, $my_year);

echo date("d.m.Y" , $new_date); // 05/12/2015 (data)

Puteți face același lucru cu alți parametri.

Verificarea valabilității datei în PHP

Când lucrați cu date, mai ales când se generează o dată folosind funcția mktime() propusă mai sus, este necesar să se țină cont de corectitudinea datei introduse. Pentru a face acest lucru, PHP folosește funcția:

bool data de verificare (int luna, int zi, int an)

Returnează true dacă data specificată de argumente este corectă; altfel se întoarce false. Data este considerată corectă dacă:

An în intervalul de la 1 la 32767;

Luna variază de la 1 la 12;

Ziua pentru o lună dată, luând în considerare anii bisecți, este indicată corect.

Exemplu de verificare a datei:

$my_day = 32;
$my_month = 12;
$my_year = 2014;

dacă (!checkdate($my_month, $my_day, $my_year))
ecou „Eroare: data este incorectă”;

Lucrul cu data și ora în PHP este relativ ușor. Disponibilitatea este destul de mare cantitate mare funcțiile fac codul mai puțin greoi (și în PHP 5.2 odată cu apariția DateTime și în 5.3 cu adăugarea claselor DateInterval și DatePeriod și a metodelor individuale, lucrul cu date a devenit și mai simplu și mai convenabil). Deci, pentru a lucra cu datele... În primul rând, în orice caz, ar trebui să rețineți că:

  • aproape orice acțiune poate fi făcută în mai multe moduri;
  • tot codul este scris pentru demonstrații și exemple de lucru;
  • Este posibil ca rezultatul alternativ propus să nu fie întotdeauna potrivit atunci când utilizați mai mult versiunea timpurie PHP (uneori mai ușor decât editarea codului de lucru de acum mulți ani);

În PHP 5.3 pentru funcţionare corectă datat pentru a evita erorile de standarde stricte. Astăzi, de regulă, această situație este luată în considerare fie în scripturi, fie în setările de găzduire.

PHP convertește marca temporală UNIX în data în formatul dat

Una dintre cele mai sarcini simple. Funcția folosită este: data($format, $time)
Primul parametru este trecerea formatului de dată - pentru mai multe detalii, consultați documentația (pentru „cel obișnuit” 28.02.2012 15:43:59 ar trebui folosit:
data("d.m.Y H:i:s", $ora)

PHP cum să aflu data de mâine/ieri

Totul este simplu și aici. Funcția time() primește ora curentă în format UNIX Timestamp. Scădeți (data de ieri) sau adăugați (mâine) cantitatea necesară secunde (86400 = 3600*24 - în zile) și obținem:
$acum = timp(); // nu este necesar
$ieri = ora()-3600*24;
$maine = ora()+3600*24;
$weekBefore = time() - 3600*24*7; // acum o saptamana
echo "Ieri: ",data ("d.m.Y", $ieri),"
Maine:",data("d.m.Y",$maine);

PHP cum să obțineți o întâlnire cu o anumită compensare (X zile mai devreme/mai târziu)

Uneori trebuie să aflați o dată care va fi de câteva zile față de cea specificată. De exemplu, utilizatorul a plătit pentru serviciu pe 11 februarie 2013 timp de 3 săptămâni. Informațiile de plată sunt disponibile. Pana la ce data se plateste?

Când puteți „doar” să adăugați câteva zile și să obțineți 13 februarie, procedura nu provoacă dificultăți deosebite. Dar ce zici cantități diferite zile într-o lună? Dar anii bisecti? Totul a fost deja inventat înaintea noastră - pentru a calcula data dintr-un interval cunoscut vom folosi mktime

$plata = matrice("ziua"=>11,"luna"=>2,"anul"=>2013);
$toDate = mktime(0,0,0,$plata["luna"],$plata["ziua"]+3*7,$plata["anul"]);
echo date("d.m.Y", $toDate); // concluzie
// în PHP > 5.3 folosind DateInterval
date_default_timezone_set("Europa/Moscova");
$datetime = new DateTime(data());
$datetime->sub(new DateInterval("P7D")); // minus 7 zile

PHP cum se calculează diferența dintre date

Ar părea situatie simpla- există două date, numărați numărul de zile (luni și zile) dintre ele. Cu toate acestea, o implementare „manuală” va dura ceva timp și există șansa de a pierde ceva (pentru distracție - cei care vor să încerce pot lăsa codul în comentarii). PHP are o funcție încorporată date_diff pentru a calcula diferența dintre date, sau mai precis Datetime::diff
$datetime1 = new DateTime("2013-05-01");
$datetime2 = new DateTime("2013-01-01");
$interval = $datetime1->diff($datetime2);
echo $interval->format("%R%a zile după Anul Nou");

PHP convertește zilele DDD în X ani Y luni Z ani

Uneori trebuie să afișați ora după un anumit eveniment. De exemplu, după înregistrare a trecut. Pentru comoditate (3200 de zile nu înseamnă mare lucru), percepția poate fi convertită în ani și luni folosind formatarea DateInterval::format
$registerDate = new DateTime("2009-03-03");
$azi = nou DataTime();
$interval = $azi->diff($registerDate);
echo "S-a scurs de la înregistrare: ";
echo $interval->format("%a zile")."\n"; // numărul total de zile
ecou „sau”;
echo $interval->format("%m luni, %d zile"); // luni, zile

Traducere PHP de la dată la marcaj temporal - analizarea datei în format rus

Uneori trebuie să convertiți o dată într-un format ușor de citit în format UNIX TIMESTAMP. Pentru a analiza o dată în formatul „2013-05-30 12:35” în componentele sale (obțineți separat anul, luna, ziua ), puteți utiliza funcția date_parse. Pentru a converti direct la marcaj temporal Unix, puteți folosi strtotime (precum și variante precum „acum”, „+1 zi”, „joia viitoare” - php.net/manual/en/datetime.formats.php):
echo strtotime("2013-05-30");
print_r (data_parse("2013-05-30 12:35"));

Cu toate acestea, pentru Rusia, formatul mai familiar este ZZ.LL.AAAA. Puteți, desigur, să împărțiți data după simbolul perioadei, să obțineți ziua, luna, anul și să utilizați funcția mktime pentru a afla valoarea UNIX TIMESTAMP corespunzătoare. PHP5.3 a introdus funcția date_parse_from_format, în care puteți trece un șir de format. Și pentru PHP5.2 am folosit strptime (a cărui existență, după cum s-a dovedit, nu toată lumea este conștientă, poate pentru că pur și simplu nu este implementată pentru Windows: Această funcție nu este implementată pe platformele Windows):

$date = "30.05.2013 12:35";
$format = "d.m.Y H:i";
print_r (data_parse_from_format($format,$data));
// Opțiune alternativă pentru PHP5.2
$format = "%d.%m.%Y %H:%M"; // diferit de cel folosit în funcția de dată
$d = strptime($data, $format);
$newDate = mktime($d["tm_hour"], $d["tm_min"], $d["tm_sec"],
$d["tm_mon"]+1, $d["tm_mday"], $d["tm_year"]+1900); // tm_mon 0-11, tm_year 1900
echo $newDate;

În plus, funcția strptime are caracteristici speciale - luna este deplasată cu unu (ianuarie - 0), iar anul este numărul de ani de la 1900, adică. pentru 2013 $d[’tm_year’] va fi egal cu 113.

Legături și informatii utile:
Funcții PHP dateTime http://www.php.net/manual/en/ref.datetime.php - funcții pentru lucrul cu data
Clasa PHP DateTime http://www.php.net/manual/en/class.datetime.php
PHP date_diff http://www.php.net/manual/en/function.date-diff.php
PHP strftime http://ru2.php.net/manual/en/function.strftime.php
PHP date_parse_from_format http://ru2.php.net/manual/en/function.date-parse-from-format.php

Este evident că de foarte multe ori programatorii trebuie lucrați cu data și ora. Cel mai simplu exemplu este data și ora la care a fost trimis mesajul pe un forum. Și, desigur, astfel de lucruri pot fi realizate PHP, mai ales că există oportunități pentru lucrul cu data și ora în PHP asa de mult.

Funcția de bază legată de data și ora în PHP, - Acest funcția time()., care returnează numărul de secunde care au trecut de atunci miezul nopții 01.01.1970(nașterea epocii Unix):

timpul ecou();
?>

Rulând acest script, veți afla câte secunde au trecut de atunci miezul nopții 01.01.1970 până în momentul apelului funcții de timp() în scenariul tău.

Desigur, pe lângă asta functie de bază, care este prezent în toate limbajele de programare unde puteți lucrați cu data și ora(cel putin printre cele pe care le cunosc) mai exista o functie numita getdate():

$datetime = getdate();
foreach ($datetime ca $k=>$v)
ecou „$k - $v
";
?>

Prin rularea acestui script, veți vedea un set de chei în matrice și valorile lor corespunzătoare (în același timp, am repetat construcția pentru fiecare). Cred că acum nu vă va fi greu să aflați date legate de data si ora. De exemplu, pentru a afișa ora curentă, ați scrie următorul cod:

$datetime = getdate();
echo $datetime["ore"]..":".$datetime["minute"]..":".$datetime["secunde"];
?>

De asemenea funcțiile getdate(). există un parametru opțional care înseamnă numărul de secunde care au trecut de atunci miezul nopții 01.01.1970. Este făcută astfel încât această funcție să poată reveni nu numai ora curentăși data și, în general, orice:

$datetime = getdate(152353232);
echo $datetime[„an”];
?>

Ca rezultat, vei vedea 1974 an.

De asemenea este si funcția date().. Vă recomand să vă uitați la descrierea acesteia în cartea de referință, deoarece această funcție acceptă un parametru foarte complex care specifică formatul de ieșire a datei. Există puțin mai mult de 30 de elemente de formatare. Și în exemplul de mai jos voi da câteva dintre ele și voi privi restul în cartea de referință, pentru că nu trebuie să le memorați, dar este foarte recomandabil să vă familiarizați cu ele. Dar este necesar să cunoaștem principiul utilizării lor și următorul exemplu despre acesta:

echo date ("Astăzi d.m.Y H:i:s");
?>

Ca rezultat, veți vedea ceva de genul acesta: " Astăzi 15.11.2010 21:44:24". De asemenea funcții date(). Există, de asemenea, un al doilea parametru opțional care specifică timestamp-ul, exact valoarea egală cu numărul de secunde care au trecut de atunci miezul nopții 01.01.1970. Exemplu de utilizare a celui de-al doilea parametru:

echo date(„A fost odată d.m.Y H:i:s”, 5393235329);
?>

De asemenea este si funcția gmdate()., care este un analog complet funcții date()., Dar funcția gmdate(). arată ora nu în funcție de fusul orar al serverului pe care rulează scriptul, ci în funcție de Greenwich. Evident, folosind această funcție trebuie să salvați toate informațiile despre data și ora pe care utilizatorul le vede, iar la ieșire trebuie să vă adaptați la fusul orar al fiecărui utilizator (ideal, desigur):

echo gmdate ("Acum în Greenwich D M j H:i:s T Y")
?>

Ca rezultat, veți vedea ceva de genul acesta: " Luni, 15 noiembrie, 18:52:45 GMT 2010„Desigur, veți vedea o dată diferită, dar într-un format similar. De asemenea, vă recomand cu tărie să intrați în cartea de referință și să vă familiarizați cu celelalte elemente de dată și oră din PHP(Am dat doar o treime), din moment ce funcțiile date() și gmdate().- acesta este cel mai simplu și cel mai cale rapidă obține data și oraîn aproape orice format.