Formatarea datei și orei curente în PHP

Veți dori adesea să lucrați cu datele și orele când creați site-uri web. De exemplu, poate fi necesar să afișați ultima dată modificată într-o postare sau să menționați cât de mult timp cititorul a scris un comentariu. S-ar putea să trebuiască, de asemenea, să afișați o inversă a zilelor până la un eveniment special.

Din fericire, PHP vine cu câteva funcții date și de timp încorporate care ne vor ajuta să facem toate acestea și mult mai ușor.

Acest tutorial vă va învăța cum să formatați data și ora curente în PHP. De asemenea, veți afla cum să obțineți marca de timp dintr-un șir de date și cum să adăugați și să scăpați date diferite.

Obținerea datei și a orei în format de șir

data (format $, timestamp) este una dintre cele mai frecvent utilizate funcții date și de timp disponibile în PHP. Este nevoie de formatul de ieșire dorit pentru dată ca primul parametru și un număr întreg ca valoare de marcă de timp care trebuie să fie convertit în formatul de dată dată. Al doilea parametru este opțional, iar omiterea acestuia va furniza data și ora curente în format de șir pe baza valorii de format $.

format $ parametrul acceptă o serie de caractere ca valori valide. Unele dintre aceste personaje au semnificații simple: Y vă oferă reprezentarea numerică completă a anului cu 4 cifre (2018) și y vă oferă doar ultimele două cifre ale anului curent (18). asemănător, H vă va oferi ora în format de 24 de ore cu zerouri de conducere, dar h vă va oferi ora în format de 12 ore cu zerouri de conducere. 

Iată câteva dintre cele mai comune caractere ale formatului de dată și valorile acestora.

Caracter Sens Exemplu
d zi a lunii cu zerouri de conducere 03 sau 17
j zi a lunii fără zerouri în frunte 3 sau 17
D zi a săptămânii ca o abreviere de trei litere Mon
L zi întreagă a săptămânii luni
m lună ca număr cu zerouri de conducere 09 sau 12
n lună ca număr fără zerouri 9 sau 12
M luna ca o abreviere de trei litere septembrie
F lună completă Septembrie
y cu două cifre 18
Y an intreg 2018

Există multe alte caractere speciale pentru a specifica ieșirea pentru Data() funcţie. Cel mai bine este să consultați tabelul cu caractere de format din Data() pentru mai multe informații despre cazurile speciale.

Să vedem câteva exemple practice ale Data() funcționează acum. Îl putem folosi pentru a obține anul curent, luna curentă, ora curentă etc., sau îl putem folosi pentru a obține un șir de date complet.

De asemenea, puteți utiliza funcția Data() pentru a scoate timpul. Iată câteva dintre cele mai frecvent utilizate caractere în format de timp:

Caracter Sens Exemplu
g ore în format de 12 ore fără zerouri de conducere 1 sau 12
h ore în format de 12 ore cu zerouri de conducere 01 sau 12
G ore în formatul de 24 de ore fără zerouri de conducere 1 sau 13
H ore în formatul de 24 de ore cu zerouri de conducere 01 sau 13
A am / pm în litere mici a.m
A am / pm în majuscule A.M
eu minute cu zerouri de conducere 09 sau 15
s secunde cu zerouri de conducere 05 sau 30

Iată câteva exemple de ieșire a șirurilor de timp formate.

// Output - 11:03:37 echo date ('h: i: s A'); // Output - joi, 11:04:09 echo date ('l, h: i: s A'); // Output - 13 septembrie 2018, 11:05:00 AM data ecoului ('d F y, h: i: s A'); ?>

De asemenea, este important să scăpați de aceste caractere speciale dacă doriți să le utilizați în șirul de date.

Obțineți timestampul Unix

Uneori, va trebui să obțineți valoarea curentă a timestampului Unix în PHP. Acest lucru este foarte ușor cu ajutorul timp() funcţie. Returnează o valoare intregă care descrie numărul de milisecunde care au trecut de la 1 ianuarie 1970 la miezul nopții (00:00:00) GMT.

De asemenea, puteți utiliza această funcție pentru a merge înainte și înapoi în timp. Pentru a face acest lucru, tot ce trebuie să faceți este scăderea numărului corect de secunde din valoarea curentă a timp() și apoi modificați valoarea rezultată în șirul de date dorit. Iată două exemple:

Un lucru important pe care ar trebui să-l amintiți este că valoarea timestampului a revenit timp() este agnosticul zonei de timp și primește numărul de secunde de la 1 ianuarie 1970 la 00:00:00 UTC. Aceasta înseamnă că, la un moment dat, această funcție va reveni la aceeași valoare în SUA, Europa, India sau Japonia.

Un alt mod de a obține marca de timp pentru o anumită dată ar fi să utilizați mktime ($ ora, $ minut, $ secunde, $ luna, $ zi, $ an) funcţie. Când toți parametrii sunt omiteți, această funcție utilizează doar data și ora locale curente pentru a calcula valoarea timestamp. Această funcție poate fi utilizată și cu Data() pentru a genera șiruri date și ora utile.

Pe scurt, timp() poate fi folosit pentru a merge înainte și înapoi într-o perioadă de timp, în timp ce mktime () este util atunci când doriți să mergeți la un moment dat în timp.

Conversia unui șir de date pe o marcă de timp

strtotime ($ timp, [$ now = time ()]) funcția va fi incredibil de utilă atunci când doriți să convertiți diferite valori de dată și oră în format de șir la o marcă de timp. Funcția poate parsa aproape toate tipurile de șiruri datetime în timestamps.

Ar trebui să verificați întotdeauna formatele de timp valide, formatele de date, formatele datetime complexe și formatele relative de datetime.

Cu formate relative datetime, această funcție poate converti cu ușurință șiruri de caractere utilizate în mod obișnuit în valori de timbru validate. Următoarele exemple ar trebui să clarifice:

Adăugarea, scăderea și compararea datelor

Este posibil să se adauge și să se scadă anumite perioade de timp până la și de la o dată. Acest lucru se poate face cu ajutorul date_add () și date_sub () funcții. De asemenea, puteți utiliza funcția date_diff () funcția de a scădea două date și a scoate diferența dintre ele în termeni de ani, luni și zile sau altceva.

În general, este mai ușor să faci o astfel de aritmetică dată și în timp în stil orientat obiect cu DateTime clasă în loc să o procedeze procedural. Vom încerca aceste două stiluri aici și puteți alege oricare dintre ele vă place cel mai mult.

format (% Y ani,% M luni și% d zile); $ present = nou DataTime ('acum'); $ future = new DateTime ("ultima zi a lunii ianuarie 2024"); $ interval = $ prezent-> diff ($ viitor); // Output - 05 ani, 04 luni și 17 zile echo $ interval-> format ('% Y ani,% M luni și% d zile'); ?>

Atunci când se utilizează DateTime :: dif (), DateTime obiect pe care dif () metoda este numită este scăzută de la DateTime obiect care este transmis către dif () metodă. Când scrieți un cod de stil procedural, primul parametru de dată este scos din al doilea parametru de dată.

Atât funcția, cât și metoda returnează a DateInterval () obiect reprezentând diferența dintre două date. Acest interval poate fi formatat pentru a da o ieșire specifică folosind toate caracterele listate în format() documentație de metodă.

Diferența dintre stilul orientat pe obiect și stilul procedural devine mai evident atunci când se scade sau se adaugă un interval de timp.

Puteți crea o instanță nouă DateTime obiect folosind DateTime () constructor. În mod similar, aveți posibilitatea să instanțiați a DateInterval obiect folosind  DateInterval () constructor. Acceptă un șir ca parametru al acestuia. Șirul de interval începe cu P, care semnifică perioada. După aceasta, puteți specifica fiecare perioadă utilizând o valoare întregă și caracterul atribuit unei anumite perioade. Ar trebui să verificați DateInterval documentație pentru mai multe detalii.

Iată un exemplu care ilustrează cât de ușor este să adăugați sau să scăpați date și ore în PHP.

add (the_interval $); // Output - Va fi sambata, 05 martie, 2039 dupa 20 de ani, 05 luni si 20 de zile de astazi. echo 'Acesta va fi'. $ now-> format ('l, d F, Y'). ' după formatul $ the_interval-> ("% Y de ani,% M luni și% d zile"). " de astazi.'; $ now = data_create ('acum'); $ the_interval = date_interval_create_from_date_string ('20 ani 05 luni 20 zile '); date_add ($ acum, $interval); // Output - Va fi sambata, 05 martie, 2039 dupa 20 de ani, 05 luni si 20 de zile de astazi. echo 'Acesta va fi'. $ now-> format ('l, d F, Y'). ' după formatul $ the_interval-> ("% Y de ani,% M luni și% d zile"). " de astazi.'; ?>

De asemenea, puteți compara datele din PHP utilizând operatori de comparare. Acest lucru poate veni la îndemână din când în când. Să creăm un contor pentru ziua de Crăciun folosind operatorii de comparație și alții DateTime metode.

 $ crăciun) $ christmas-> add (nou DataInterval ('P1Y'));  dacă ($ acum < $christmas)  $interval = $now->dif ($ Crăciun); echo $ interval-> format ('% a days'). ' până la Crăciun! ';  dacă ($ now == $ crăciun) echo 'Merry Christmas :)';  // Output - 103 de zile până la Crăciun! ?>

Am început prin crearea a două DateTime obiecte pentru a stoca momentul prezent și data de Crăciunul din acest an. După aceea, executăm o in timp ce buclă pentru a adăuga un an la data de Crăciun din 2018 până la data actuală este mai mică decât data de Crăciun. Acest lucru va fi util atunci când codul rulează la data de 18 ianuarie 2024. Bucla în timp va crește data de Crăciun, atâta timp cât este mai mică decât actuala dată la momentul executării acestui script.

Contorul zilei de Crăciun va lucra acum câteva decenii fără probleme.

Gândurile finale

În acest tutorial, am învățat cum să afișăm data și ora curente într - un format dorit folosind Data() funcţie. Am mai văzut și asta Data() poate fi folosit și pentru a obține doar anul curent, luna și așa mai departe. După aceea, am învățat cum să obținem marca de timp curentă sau să convertim o validare DateTime șir într-o marcă de timp. În cele din urmă, am învățat cum să adăugăm sau să scăpăm o perioadă de timp din date diferite.

Am încercat să acopăr cheia DateTime funcții și metode aici. Ar trebui să aruncați o privire asupra documentației pentru a citi despre funcțiile care nu sunt incluse în tutorial. Dacă aveți întrebări, nu ezitați să ne anunțați în comentarii.

Cod