Vrijeme PHP servera je trenutno. Pretvorite datum i vrijeme u format vremenske oznake. Zašto se pretplatiti na naše vijesti

Među raznim programskim zadacima prilično su uobičajene razne manipulacije s vrijednostima datuma i vremena. Rijedak automatizirani sistem, baza podataka, može bez pohranjivanja informacija o vremenu određenog procesa. Osim jednostavnog dodavanja datuma u zapis baze podataka ili prikazivanja tog datuma, postoji mnogo zadataka za prikaz ovih datuma u razne forme, provjeravanje da li trenutno vrijeme odgovara datom mjeraču vremena, izračunavanje vremena između dva datuma i još mnogo toga.

Možete kreirati dvije demo stranice da biste razumjeli koncept vremenske oznake. Sastanci su onaj dio svakodnevnog života da je s njima lako raditi bez razmišljanja. Ne uzima argumente, ali vraća cijeli broj. Ovo će proizvesti sljedeći rezultat -. Teško je to razumjeti.

Sada imate potpunu kontrolu nad datumom i vremenom. Možete formatirati ovaj datum i vrijeme u bilo kojem formatu koji želite. Sljedeće tablice navode kodove koje formatni niz može sadržavati -. Nadam se da dobro razumete kako da formatirate datum i vreme prema vašim zahtevima.

Za praktičnost rada s datumima, svaki programski jezik ima svoje posebne tipove podataka za pohranjivanje vrijednosti datuma i vremena. Najčešće je to numerička vrijednost, bilo cijeli broj ili vrijednost s pomičnim zarezom.

AT PHP rad sa datumom se najčešće susreće UNIX TIMESTAMP. Ovdje je vrijeme pohranjeno kao cijeli broj. Računanje vremena počinje 1. januara 1970. godine. Stoga bi, na primjer, datum i vrijeme 11.12.2014. 19:40:00 bili predstavljeni brojem 1418316000. Ova brojka pokazuje koliko je sekundi prošlo od nultog datuma 1. januara 1970. godine, nazvanog Unix epoha .

Vraća trenutno lokalno vrijeme bloga u navedenom formatu. Počevši od verzije 9, bilo koja druga vrijednost za prvi parametar će se koristiti kao format vremena. Ako je postavljeno na 0 ili bez drugog parametra, povratna vrijednost je lokalno vrijeme za vremensku zonu deklariranu u postavkama vremenske zone bloga na stranici općih postavki.

Pretvorite datum i vrijeme u format vremenske oznake

Ovaj primjer dobiva trenutno vrijeme i dodeljuje parametre varijablama. Da bismo dobili informacije koje su nam potrebne za ispis, moramo koristiti neke ili sve sljedeće funkcije. Sada možemo ispisati podatke o datumu. Međutim, vremenska oznaka je opcioni parametar, ako nije uključen tada će se koristiti trenutni datum i vrijeme. Sljedeća izjava prikazuje današnji datum.

Primjer php stranice koja pruža mogućnosti konverzije podataka predstavljen je na stranici u odjeljku programi programom "Konverzija formata datuma i vremena". Ovdje možete oblikovati željeni datum u UNIX TIMESTAMP formatu, kao i dovesti ovaj format u standardni, čovjeku čitljiv oblik.

Dobivanje trenutnog vremena i datuma u PHP-u

Da biste dobili trenutno vrijeme servera, koristite funkciju

Evo nekih znakova formata vezanih za datum koji se obično koriste u nizu formata. Dijelovi datuma se mogu razdvojiti umetanjem drugih znakova kao što su crtice, tačke, kose crte ili razmaci kako bi se dodalo dodatno vizualno oblikovanje.

Zašto se pretplatiti na naše vijesti!?

Slično, možete koristiti sljedeće znakove za formatiranje vremenskog niza. Gornji primjer daje sljedeći rezultat. Ako datum i vrijeme nisu navedeni, vraća se vremenska oznaka za trenutni datum i vrijeme. Bilješka. Možete ostaviti koliko god argumenata želite, a umjesto toga će se koristiti vrijednost koja odgovara trenutnom vremenu.

int vrijeme (void)

koji će samo vratiti vrijednost u unix formatu vremenske oznake.

echotime(); // prikazuje trenutno vrijeme u unix formatu vremenske oznake

Na prvi pogled, ovo nije baš zgodan format za osobu, ali, kao što znate, što je jednostavnije predstavljanje podataka, to je brža obrada ovih vrijednosti od strane računara. Također, pohranjivanje broja u bazu podataka je mnogo ekonomičnije od bilo kojeg posebnog formata. Takođe, PHP tokom vremena radi na isti način na Unix i Windows platformama, što omogućava korišćenje koda na bilo kojoj od ovih platformi.

Primjeri rada s datumom

Kao što je prikazano u sljedećem primjeru, koji prikazuje datum koji se pojavljuje 30 mjeseci od trenutnog datuma? Počnimo tako što ćemo pogledati kako prikazati trenutni datum ili vrijeme. Funkcija uzima dva argumenta. Prvi koji je potreban je string i to formatira datum.

Drugi, koji nije obavezan, postavlja vrijeme. Ako izostavite drugi argument, on podrazumevano podrazumeva trenutni datum i vreme. U osnovi, vrlo je jednostavno. Ono što nije tako lako je zapamtiti opcije formatiranja. Pomaknimo se prema dolje i pogledajmo ih. Ima preko 30 znakova za formatiranje. Neke od njih je lako zapamtiti, ali većina njih nije bitna.

PHP konverzija formata datuma i vremena

Najjednostavniji mehanizam za pretvaranje numeričke vrijednosti datuma u čitljivije vrijednosti pruža funkcija:

niz getdate()

Vraća asocijativni niz koji sadrži informacije o datumu. Ako parametar vremenske oznake nije naveden, bit će vraćene informacije o trenutnom vremenu. Ovaj niz sadrži sljedeće vrijednosti:

Imena, uzgred, sva samo na engleski jezik. Hajde da probamo malo. Idemo na moj program za uređivanje i imaćemo samo danas. Zatim ćemo to povezati sa funkcijom datuma i string formata će biti mala slova 1. Ako ga sačuvamo i zatim pogledamo u pretraživaču, on će nam reći da je "Danas je ponedeljak". I naravno, bit će drugačije ovisno o tome koji dan u sedmici testirate.

Možete kombinirati znakove za formatiranje i koristiti interpunkciju. Sačuvajte ovo i osvježite svoj pretraživač. Vrijeme prikazujete na isti način koristeći znakove formata. Ne osvježava se osim ako se stranica ponovo učita u pretraživaču. Na isti način na koji niz formata može sadržavati znakove interpunkcije, možete dodati i običan tekst.

Rezultirajući niz vam omogućava da prikažete vrijednosti u željenom obliku:

$date = 1418372345;
$date_mas = getdate($date);
echo $date_mas["mday" ] . " . " . $date_mas["pon" ] . " . " . $date_mas["godina"]; // 12.12.2014


Funkciju možete koristiti i za pretvaranje formata datuma i vremena:

string date(string $template [, int $unix_timestamp])

Dizajniran je da dobije trenutni datum unix vremenske oznake u željenom formatu. Parametar stringa $template specificira izlazni format. Pomoću parametra $unix_timestamp možete odrediti s kojom vrijednošću vremena ćete raditi. Nije obavezno, pa ako ga ne navedete, koristit će se trenutni datum i vrijeme.

Nadamo se da ćemo dobiti vrijeme na određeni datum. Da biste dobili običan tekst, morate izbjeći ovo. I ovaj put dobijamo ovaj pravi tekst. Funkcija datuma se također može koristiti s unaprijed definiranim konstantama. Svi su navedeni u online dokumentaciji.

Vratimo se samo na dokumentaciju i ako malo skrolujemo, možemo vidjeti da ovdje postoji veza do unaprijed definiranih datumskih konstanti. Ako ovo pratimo, evo konstanti. Postoje dvije vrste konstanti. Obojica rade isto. Nije bitno šta koristite, svi su podržani. Najteži aspekt rada s funkcijom datuma je pamćenje znakova za formatiranje. Pa šta je to DOBRA IDEJA da označite online dokumentaciju gdje su svi navedeni.

Format je dat sljedećim vrijednostima:

a"prije" i "poslije" podneva: "am" ili "pm"
A"prije" i "poslije" podne velikim slovima: "AM" ili "PM"
ddan u mjesecu u 2 cifre (ako je manje od 10, prvo nula) (01 do 31)
Ddan u sedmici sa 3 slova. Na primjer, "pon" (ponedeljak)
jdan u mjesecu 1-2 cifre bez vodećih nula (1 do 31)
Fime mjeseca. Na primjer, "januar"
hsat, 12-satni format (01 do 12)
Hsat, 24-satni format (00 do 23)
gsat, 12-satni format bez nula (od 1 do 12)
Gsat, 24-satni format bez nula (0 do 23)
iminuta (00 do 59)
ja (veliko i)1 ako je ljetno računanje vremena na snazi, 0 u suprotnom
L1 ako je godina prijestupna ili 0 ako nije prijestupna
Bvrijeme u internet formatu vremena ( alternativni sistem doba dana) (000 do 999)
Tvremenska zona računara. Na primjer, MDT
l (mala slova L)dan u tjednu. Na primjer, "ponedjeljak"
mmjesec, dvije cifre sa nulama (01 do 12)
nmjesec, jedna ili dvije cifre bez nula (od 1 do 12)
Mskraćeni naziv mjeseca. Na primjer, "Jan"
tbroj dana u navedenom mjesecu (od 28 do 31)
ssekundi (0 do 59)
Sdvoslovni engleski redni nastavak ("st", "nd", "rd" ili "th")
Ucijeli broj sekundi od početka UNIX epohe
ygodina, digitalna, 2 cifre (14)
Ygodina, digitalno, 4 cifre (2014)
zredni broj dana u godini (od 0 do 365)
Zpomak vremenske zone u sekundama (-43200 do 43200)
Nredni broj dana u sedmici od 1 (ponedjeljak) do 7 (nedjelja) prema ISO-8601 standardu, (dodato u PHP 5.1.0)
wredni broj dana u sedmici od 0 (nedjelja) do 6 (subota)
Wserijski broj sedmice u godini u skladu sa standardom ISO-8601; sedmice počinju u ponedjeljak (dodato u PHP 4.1.0)
ogodine u skladu sa standardom ISO-8601. Ima isto značenje kao Y osim kada ISO broj sedmice (W) pripada prethodnoj ili narednoj godini; tada će se koristiti godina te sedmice. (dodato u PHP 5.1.0)
ekod vremenske zone. Na primjer: UTC, GMT, Atlantic/Azores (dodato u PHP 5.1.0)
Orazlika od srednjeg vremena po Griniču, u satima. Na primjer: +0200
Prazlika od srednjeg vremena po Griniču sa dvotočkom između sati i minuta. Na primjer: +02:00 (dodato u PHP 5.1.3)
cdatum u formatu ISO 8601. Na primjer, 2014-12-12T15:19:21+00:00 (dodato u PHP 5)
rdatum u formatu » RFC 2822. Na primjer: Thu, 21 Dec 2000 16:01:07 +0200
Ubroj sekundi od početka Unix epohe (The Unix Epoch, 1. januar 1970. 00:00:00 GMT)

Kao što možete vidjeti iz liste, pomoću ove funkcije možete dobiti mnogo korisnih podataka o datumima. Na primjer:

Trebate izračunati datum trećeg četvrtka u mjesecu ili petka nakon sljedećeg? Na primjer, možete naučiti kako pronaći i postaviti vremenske zone, izvršiti proračune datuma koji uključuju različite vremenske zone i ljetno računanje vremena i izračunati vrijeme izlaska i zalaska sunca. Započnite pregledavanje i naučite kako da ugradite ove moćne značajke u svoj programski arsenal.

Dobivanje trenutnog vremena i datuma u PHP-u

Vremenska zona je regija na Zemlji koja ima jedno standardno vrijeme za pravne, komercijalne i društvene svrhe. Pogodno je da oblasti sa bliskim komercijalnim ili drugim saobraćajem održavaju isto vreme, tako da vremenske zone teže da prate granice zemalja i njihovih podela.

$date = 1418372345; // originalni datum i vrijeme 12.12.2014. 11:19:05

echo date("d.m.Y" , $date); // 12.12.2014. (datum)
echo date("H:i:s" , $date); // 11:19:05 (vrijeme)
echo date("H:i" , $date); // 11:19 (vrijeme)
echo date("t" , $date); // 31 (broj dana u mjesecu)
echo date("z" , $date); // 345 (redni broj dana u godini)
echo date("l dS \of F Y h:i:s A" , $date); // Petak, 12. prosinca 2014. 11:19:05

Kada dođe vrijeme, važno je osigurati da korisnici dobiju vrijeme prikazano u lokalnom vremenu kako bi se izbjegle greške, posebno kada imate urede ili korisnike u različitim dijelovima svijeta. Kako biste bili sigurni da su svi korisnici u svakom trenutku prikazani u prikladnom formatu.

Ovdje su objašnjene obje metode. Sljedeći znakovi se mogu koristiti u nizu opcija formata. Ovo možete koristiti na svom lokalnom serveru ili ako imate vlastiti server. U svakom slučaju, ne preporučuje se oslanjanje na sistemsko vrijeme.

Geografska dužina i širina brojnih većih gradova

Stoga se ova metoda ne preporučuje osim ako niste sigurni. Ova metoda je prilično jednostavna jer nije potrebna konfiguracija. Izlaz za gornji kod je dat u nastavku. prikazuje vrijeme u indijskom standardnom vremenu. Korištenje gornje dvije funkcije Ne možete promijeniti vrijeme pohranjeno u bazi podataka na željeno vrijeme.

Ostali znakovi uključeni u uzorak će biti prikazani kao u nizu. Ako trebate unijeti znak koji se koristi kao kod formata u funkciji, ispred njih se ubacuje znak "\". Za vrijednost "\n" (znak za novi red) treba navesti "\\n". Tako možete ispisati cijelu poruku koja sadrži informacije o datumu i vremenu:

Pretvaranje vremena iz jedne zone u drugu zonu

Ako imate pohranjeno vrijeme u vašoj bazi podataka u nekoj drugoj zoni, a trebate ga u drugoj, ne možete to postići gore navedenim stvarima, čak i ako imate korisnike koji koriste različite vremenske zone, možete to učiniti koristeći ovo kako korisnik može podesiti željeno vrijeme kada mu je potrebno.

Da biste to učinili, potrebno je kreirati standard za pohranjivanje vremena u bazi podataka. Bilo koji format će biti u redu, ali možda ćete morati još malo poraditi da biste dovršili konverziju. Slijede tri opcije, ali prvo postoji problem. Vremenska oznaka je samo cijeli broj. Dakle, konačno ćemo doći do izbora šta ćemo koristiti. Jednostavan je za korištenje i najefikasniji je u smislu količine memorije u tablici podataka i brzine izvršavanja pri čitanju i pisanju podataka.

echo date( „Danas z-ti dan Y-ta godina", $date); // Danas je 345. dan 2014

Pretvorite datum i vrijeme u format vremenske oznake

Za obrnuto pretvaranje datuma iz standardnog formata u vrijednost numeričke vremenske oznake, koristite funkciju:

int mktime(]]]]]])

Funkcija mktime() vraća Unix vrijednost vremena koja odgovara datumu i vremenu datim argumentima. Na primjer:

Kovačnica

Međutim, neki upiti će biti složeniji jer vaš datum nije u polju datuma i možete izgubiti na duge staze.

Format

Ovo će prikazati sve datume u lokalnoj vremenskoj zoni korisnika. Funkcije se mogu koristiti za dobivanje datuma i vremena u drugom formatu.

Ove funkcije zavise od podešavanja vremenske zone web servera. Drugi znakovi poput ":" između slova također se mogu koristiti za dodavanje dodatnog oblikovanja. Također možete prilagoditi izlaz iz niza formata. Ispod je puna lista opcije formatiranja.

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

Trebali biste paziti na redoslijed argumenata funkcije: sati, minute, sekunde, mjesec, dan, godina.

Osim jednostavnog generiranja vrijednosti datuma u vremenskoj oznaci, funkcija mktime() može se koristiti za izvođenje aritmetike s datumima. Da biste to učinili, jednostavno možete unijeti potrebne argumente. Na primjer, ako navedete mjesec 14, tada će u konačnoj vrijednosti mjesec biti 2., a vrijednost godine će se povećati za jedan:

Ova funkcija se mora koristiti u programu za rad s drugom vremenskom zonom. Evo početka serije za web razvoj kao dio novog dodatka mom blogu, uključujući vodiče za kod i isječke koda koji su besplatni za korištenje. Ovo doslovno samo povlači trenutni datum koristeći tehnologiju na strani servera i zaista je lako implementirati umjesto ručnog upisivanja godine.

Početak i tekuća godina

Ispod je primjer za detalje. Svaki parametar ove funkcije koristi zadanu vremensku zonu ako nije navedena vremenska zona u tom parametru. Treba paziti da ne koristite različite vremenske zone za svaku postavku osim ako je to namjera.

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

Isto možete učiniti i sa drugim parametrima.

Potvrda datuma u PHP-u

Prilikom rada s datumima, posebno kada se formira datum pomoću gore predložene funkcije mktime(), potrebno je voditi računa o ispravnosti unesenog datuma. Da bi to uradio, PHP koristi sledeću funkciju:

Važeći formati su objašnjeni formatima datuma i vremena. Vremenska oznaka se koristi kao osnova za izračunavanje relativnih podataka. Imajte na umu sljedeće napomene u vezi sa razlikama na 32-bitnim sistemima. Ne preporučuje se korištenje ove funkcije za matematičke proračune.

Ovim metodama se mogu proslijediti statičke konstante koje definiraju detalje i precizno formatiranje izlaza. Međutim, osnova je uvijek formatiranje određeno postavkama zemlje i vremenske zone. Nizovi datuma se mogu formatirati prema vašim željama. Sadrži čitav niz unaprijed definiranih statičkih formatera, od kojih su neki prikazani ovdje.

bool datum provjere (int mjesec, int dan, int godina)

Vraća true ako je datum dat argumentima tačan; inače vraća false. Datum se smatra tačnim ako:

Godina u rasponu od 1 do 32767;

Mjesec u rasponu od 1 do 12;

Dan za dati mjesec, uzimajući u obzir prijestupnu godinu, je tačan.

Primjer validacije datuma:

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

Potreban je niz unapred definisani karakterišablon pomoću kojeg se može precizno kontrolisati formatiranje. Opet vidite da možda nemate uvijek rješenje, ali morate djelovati na problem. Pretvaranje postojećeg datuma se pokazalo vrlo jednostavnom, jer je potrebno zamijeniti samo određena područja unutar datuma.

U sljedećem koraku, proslijeđeni podaci se razlažu na svoje komponente pomoću crtice, a zatim se pretvaraju u niz. Konačno, samo trebamo pretvoriti naš niz sa pojedinačnim komponentama datuma u važeći njemački datum. Samo treba da odvojimo datum i vreme.

if (!checkdate($my_month, $my_day, $my_year))
echo "Greška: nevažeći datum";

Za prikaz vremena ili datuma u prilagođenom formatu postoji funkcija datuma.

Ovaj primjer prikazuje trenutni datum u formatu dan/mjesec/godina kao brojevi. Nakon što pročitate ovaj članak do kraja, moći ćete prikazati trenutni datum i vrijeme u bilo kojem formatu.
Ova funkcija vam omogućava da prikažete ne samo trenutni datum i vrijeme, već i pretvorite vremensku oznaku u navedeni format. Vremenska oznaka je broj sekundi od osnivanja linuxa. Ovaj broj se može dobiti pomoću funkcije time(). Vremenska oznaka u funkciji datuma je izborni parametar.Da biste dobili format koji želite, možete koristiti posebne modifikatore za prvi parametar. Ima ih dovoljno.

Konačno, samo trebamo vratiti niz na pozivnu tačku. Također je moguće proslijediti parametre. Može biti korišteno. Opciono, ovaj niz se može povećati za sate, minute, sekunde i milisekunde. Imajte na umu da januar ima vrijednost 0, a februar vrijednost 1. . Ako pre svega imamo vremena, možemo ga potrošiti svuda, na primer, u statusnoj traci.

Razlika se može izračunati na sljedeći način. Sada nedostaje samo jedan razmak da bi se prikaz stalno aktivirao. Napominjemo da su obrazac, kao i sva polja, jasno označeni tako da je pristup zagarantovan bez grešaka. Sljedeća skripta kreira datum iz podataka.

Znak u nizu formataOpisPrimjer povratne vrijednosti
aam ili pm malim slovimaam, pm
AAM ili PM velikim slovimaAM, popodne
BSwatch Internet vrijeme000 do 999
cDatum u ISO 8601 formatu (dodato u PHP 5)2005-06-11T11:11:11+00:00
dDan u mjesecu, 2 cifre sa vodećim nulamaod 01 do 31h
DSkraćeni naziv dana u sedmici, 3 znakapon do ned
FPuni naziv mjesecaOd januara do decembra
gSati u 12-satnom formatu bez vodećih nula1 do 12
GSati u 24-satnom formatu bez vodećih nula0 do 23
hSati u 12-satnom formatu sa vodećim nulama01 do 12
HSati u 24-satnom formatu sa vodećim nulama00 do 23
iMinute sa vodećim nulama00 do 59
ja (veliko i)Znak za ljetno računanje vremena1 ako je datum DST, u suprotnom 0 u suprotnom.
jDan u mjesecu bez vodećih nula1 do 31
l (mala slova "L")Puni naziv dana u sedmiciOd nedjelje do subote
LZnak prijestupne godine1 ako je godina prijestupna, inače 0.
mRedni broj mjeseca sa vodećim nulama01 do 12
MSkraćeni naziv mjeseca, 3 znakaOd januara do decembra
nRedni broj mjeseca bez vodećih nula1 do 12
ORazlika od srednjeg vremena po Griniču u satima+0200
rDatum u formatu RFC 2822Thu, Jan 28, 2011 15:11:14 PM +0200
sSekunde sa vodećim nulama00 do 59
SEngleski sufiks rednog dana u mjesecu, 2 znakast, nd, rd ili th. Koristi se zajedno sa j
tBroj dana u mjesecu28 do 31
TVremenska zona na serveruPrimjeri: EST, MDT...
UBroj sekundi od početka Unix epohe (The Unix Epoch, 1. januar 1970, 00:00:00 GMT)1356361196
wRedni broj dana u sedmici0 (nedjelja) do 6 (subota)
WISO-8601 broj sedmice u godini, prvi dan u sedmici je ponedjeljak (dodato u PHP 4.1.0)Na primjer: 42 (42. sedmica u godini)
YRedni broj godine, 4 cifrePrimjeri: 1986, 2012
yBroj godine, 2 cifrePrimjeri: 86, 12
zRedni broj dana u godini (broj od 0)0 do 365
ZPomak vremenske zone u sekundama. Za vremenske zone zapadno od UTC ovo je negativan broj, istočno od UTC je pozitivan broj.-43200 do 43200