Formattazione della data e dell'ora correnti in PHP

Spesso vorrai lavorare con date e orari quando sviluppi siti web. Ad esempio, potrebbe essere necessario mostrare l'ultima data modificata su un post o menzionare quanto tempo fa un lettore ha scritto qualche commento. Potrebbe anche essere necessario mostrare un conto alla rovescia dei giorni fino a un evento speciale.

Fortunatamente, PHP ha alcune funzioni di data e ora integrate che ci aiuteranno a fare tutto questo e molto più facilmente.

Questo tutorial ti insegnerà come formattare la data e l'ora correnti in PHP. Imparerai anche come ottenere il timestamp da una stringa di data e come aggiungere e sottrarre date diverse.

Ottenere la data e l'ora in formato stringa

data (formato $, $ timestamp) è una delle funzioni di data e ora più comunemente usate in PHP. Prende il formato di output desiderato per la data come primo parametro e un intero come valore di timestamp che deve essere convertito nel formato data specificato. Il secondo parametro è facoltativo e omettendolo fornirà l'output della data e dell'ora corrente in formato stringa in base al valore di formato $.

Il formato $ parametro accetta una serie di caratteri come valori validi. Alcuni di questi personaggi hanno significati chiari: Y ti fornisce la rappresentazione numerica completa dell'anno con 4 cifre (2018), e y ti dà solo le ultime due cifre dell'anno corrente (18). allo stesso modo, H ti darà l'ora nel formato 24 ore con zero iniziali, ma h ti darà l'ora nel formato 12 ore con gli zeri iniziali. 

Ecco alcuni dei più comuni formati di data e i loro valori.

Personaggio Senso Esempio
d il giorno del mese con gli zeri iniziali 03 o 17
j giorno del mese senza zeri iniziali 3 o 17
D giorno della settimana come un'abbreviazione di tre lettere Mon
l giornata intera della settimana Lunedi
m mese come numero con zero iniziali 09 o 12
n mese come numero senza zero iniziali 9 o 12
M mese come un'abbreviazione di tre lettere settembre
F intero mese settembre
y anno a due cifre 18
Y anno pieno 2018

Ci sono molti altri caratteri speciali per specificare l'output per il Data() funzione. È meglio consultare la tabella dei caratteri di formato nel file Data() documentazione della funzione per ulteriori informazioni su casi speciali.

Vediamo alcuni esempi pratici di Data() funzione ora. Possiamo utilizzarlo per ottenere l'anno corrente, il mese corrente, l'ora corrente, ecc. Oppure possiamo usarlo per ottenere una stringa di data completa.

Puoi anche usare il Data() funzione per emettere il tempo. Ecco alcuni dei caratteri di formato dell'ora più comunemente utilizzati:

Personaggio Senso Esempio
g ore nel formato 12 ore senza zeri iniziali 1 o 12
h ore nel formato 12 ore con zero iniziali 01 o 12
sol ore nel formato 24 ore senza zeri iniziali 1 o 13
H ore nel formato 24 ore con zero iniziali 01 o 13
un am / pm in lettere minuscole sono
UN am / pm in maiuscolo AM
io minuti con zeri iniziali 09 o 15
S secondi con zero iniziali 05 o 30

E qui ci sono alcuni esempi di emissione di stringhe di tempo formattate.

// Output - 11:03:37 AM echo date ('h: i: s A'); // Output - Giovedì, 11:04:09 Data dell'eco ('l, h: i: s A'); // Output - 13 settembre 2018, 11:05:00 AM data dell'eco ('d F Y, h: i: s A'); ?>

È anche importante che tu sfugga a questi caratteri speciali se vuoi usarli all'interno della tua stringa di date.

Ottieni il timestamp Unix

A volte, è necessario ottenere il valore dell'attuale timestamp Unix in PHP. Questo è molto facile con l'aiuto di tempo() funzione. Restituisce un valore intero che descrive il numero di millisecondi trascorsi dal 1 gennaio 1970 a mezzanotte (00:00:00) GMT.

Puoi anche utilizzare questa funzione per andare avanti e indietro nel tempo. Per fare ciò, tutto ciò che devi fare è sottrarre il giusto numero di secondi dal valore corrente di tempo() e quindi modificare il valore risultante nella stringa di data desiderata. Ecco due esempi:

Una cosa importante da ricordare è che il valore di timestamp restituito da tempo() è agnostico fuso orario e ottiene il numero di secondi dal 1 gennaio 1970 alle 00:00:00 UTC. Ciò significa che in un determinato momento, questa funzione restituirà lo stesso valore negli Stati Uniti, in Europa, in India o in Giappone.

Un altro modo per ottenere il timestamp per una data specifica sarebbe utilizzare il mktime ($ ora, $ minuto, $ secondo, $ mese, $ giorno, $ anno) funzione. Quando tutti i parametri sono omessi, questa funzione utilizza solo la data e l'ora locale corrente per calcolare il valore di timestamp. Questa funzione può anche essere utilizzata con Data() per generare utili stringhe di data e ora.

Fondamentalmente, tempo() può essere usato per andare avanti e indietro per un periodo di tempo, mentre mktime () è utile quando vuoi andare in un particolare momento.

Convertire una stringa datetime in un timestamp

Il strtotime ($ time, [$ now = time ()]) la funzione sarà incredibilmente utile quando si desidera convertire diversi valori di data e ora nel formato stringa in un timestamp. La funzione può analizzare quasi tutti i tipi di stringhe datetime in timestamp.

Dovresti assolutamente verificare i formati di tempo validi, i formati di data, i formati datetime composti e i formati datetime relativi.

Con i formati datetime relativi, questa funzione può convertire facilmente stringhe di uso comune in valori di timestamp validi. I seguenti esempi dovrebbero chiarire:

Aggiunta, sottrazione e confronto delle date

È possibile aggiungere e sottrarre determinati periodi di tempo ae da una data. Questo può essere fatto con l'aiuto di DATE_ADD () e DATE_SUB () funzioni. Puoi anche usare il date_diff () funzione per sottrarre due date e generare la differenza tra loro in termini di anni, mesi e giorni o qualcos'altro.

In generale, è più facile fare una tale aritmetica data e ora in stile orientato agli oggetti con il Appuntamento classe invece di farlo in modo procedurale. Proveremo entrambi questi stili qui e potrai scegliere quello che ti piace di più.

formato ('% Y anni,% M mesi e% d giorni'); $ present = new DateTime ('now'); $ future = new DateTime ('last day of January 2024'); $ interval = $ present-> diff ($ future); // Output: 05 anni, 04 mesi e 17 giorni echo $ interval-> format ('% Y anni,% M mesi e% d giorni'); ?>

Quando si usa DateTime :: diff (), il Appuntamento oggetto su cui il diff () il metodo è chiamato è sottratto dal Appuntamento oggetto che è passato al diff () metodo. Quando si scrive codice stile procedurale, il primo parametro data viene sottratto dal secondo parametro data.

Sia la funzione che il metodo restituiscono a DateInterval () oggetto che rappresenta la differenza tra due date. Questo intervallo può essere formattato per fornire uno specifico output utilizzando tutti i caratteri elencati in formato() documentazione del metodo.

La differenza tra lo stile orientato agli oggetti e lo stile procedurale diventa più evidente quando si sottrae o si aggiunge un intervallo di tempo.

Puoi istanziare un nuovo Appuntamento oggetto usando il Appuntamento() costruttore. Allo stesso modo, puoi istanziare a DateInterval oggetto usando il  DateInterval () costruttore. Accetta una stringa come parametro. La stringa dell'intervallo inizia con P, che significa periodo. Successivamente, è possibile specificare ciascun periodo utilizzando un valore intero e il carattere assegnato a un particolare periodo. Dovresti controllare il DateInterval documentazione per maggiori dettagli.

Ecco un esempio che illustra quanto sia facile aggiungere o sottrarre date e ore in PHP.

aggiungere ($ the_interval); // Output - Sarà sabato, 05 marzo, 2039 dopo 20 anni, 05 mesi e 20 giorni da oggi. echo 'Sarà'. $ now-> format ('l, d F, Y'). ' dopo il formato '. $ the_interval-> ("% Y anni,% M mesi e% d giorni").' da oggi.'; $ now = date_create ('now'); $ the_interval = date_interval_create_from_date_string ('20 anni 05 mesi 20 giorni '); date_add ($ now, $ the_interval); // Output - Sarà sabato, 05 marzo, 2039 dopo 20 anni, 05 mesi e 20 giorni da oggi. echo 'Sarà'. $ now-> format ('l, d F, Y'). ' dopo il formato '. $ the_interval-> ("% Y anni,% M mesi e% d giorni").' da oggi.'; ?>

Puoi anche confrontare le date in PHP usando operatori di confronto. Questo può tornare utile ogni tanto. Creiamo un contatore del giorno di Natale usando gli operatori di confronto e altro Appuntamento metodi.

 $ natale) $ natale-> aggiungi (nuovo DateInterval ('P1Y'));  if ($ now < $christmas)  $interval = $now->diff ($ Natale); echo $ interval-> format ('% a days'). ' fino a Natale! ';  if ($ now == $ christmas) echo 'Merry Christmas :)';  // Output: 103 giorni fino a Natale! ?>

Abbiamo iniziato creando due Appuntamento oggetti per memorizzare l'ora presente e la data del Natale di quest'anno. Dopo di ciò, eseguiamo a mentre loop per continuare ad aggiungere 1 anno alla data di Natale del 2018 fino a quando la data attuale è inferiore alla data di Natale. Ciò sarà utile quando il codice verrà eseguito il 18 gennaio 2024. Il ciclo while incrementerà la data di Natale purché sia ​​inferiore alla data corrente al momento dell'esecuzione di questo script.

Il nostro contatore del giorno di Natale ora funzionerà per decenni senza problemi.

Pensieri finali

In questo tutorial, abbiamo imparato come emettere la data e l'ora correnti in un formato desiderato usando il Data() funzione. L'abbiamo visto anche noi Data() può anche essere usato per ottenere solo l'anno, il mese e così via. Successivamente, abbiamo imparato come ottenere il timestamp corrente o convertire un valore valido Appuntamento stringa in un timestamp. Infine, abbiamo imparato come aggiungere o sottrarre un periodo di tempo da date diverse.

Ho provato a coprire la chiave Appuntamento funzioni e metodi qui. Dovresti assolutamente dare un'occhiata alla documentazione per leggere le funzioni non trattate nel tutorial. Se avete domande, non esitate a farmelo sapere nei commenti.