W3docs

Manipolazione di Date e Ore in PHP

Scopri come manipolare date e ore in PHP usando DateTime::add(), DateInterval e altre funzioni utili.

PHP è un popolare linguaggio di programmazione lato server ampiamente utilizzato per creare pagine web dinamiche. Una delle caratteristiche più importanti di PHP è la sua capacità di manipolare date e ore. In questo articolo esploreremo le varie funzioni di manipolazione di date e ore disponibili in PHP e come possono essere usate per semplificare il processo di sviluppo.

Comprendere Date e Ore in PHP

Prima di addentrarci nelle varie funzioni disponibili in PHP per manipolare date e ore, capiamo come PHP gestisce date e orari. In PHP, date e ore sono rappresentate come string. Il formato più comune per rappresentare una data è YYYY-MM-DD, mentre il formato più comune per rappresentare un'ora è HH:MM:SS.

PHP fornisce anche una funzione built-in chiamata date() che può essere usata per formattare date e ore in diversi modi. La funzione date() accetta due argomenti: una stringa di formato e un timestamp. La stringa di formato specifica il formato desiderato di data e ora, mentre il timestamp indica il momento da formattare.

Aggiungere Tempo alle Date in PHP

La funzione date() viene utilizzata principalmente per formattare i timestamp in stringhe leggibili. Per aggiungere o sottrarre intervalli di tempo da una data, PHP mette a disposizione la classe DateTime con il suo metodo add(). La funzione procedurale date_add() (che dà il nome a questo capitolo) è un alias legacy di DateTime::add(), ma è consigliato l'approccio orientato agli oggetti.

Ecco un esempio di come aggiungere un giorno a una data usando DateTime::add():

php— editable, runs on the server

In questo esempio, creiamo un object DateTime dalla stringa della data iniziale. Usiamo poi il metodo add() con un object DateInterval (P1D rappresenta un periodo di 1 giorno) per modificare la data. Infine, formattiamo e stampiamo la data aggiornata.

Comprendere il formato DateInterval

La stringa passata a DateInterval segue il formato di durata ISO 8601. Inizia sempre con la lettera P (per "period"). Le parti relative alla data vengono prima, poi un separatore opzionale T introduce le parti relative all'ora:

CodiceSignificato
Yanni
Mmesi (prima di T)
Dgiorni
Tseparatore prima delle parti di tempo
Hore
Mminuti (dopo T)
Ssecondi

Quindi P1Y2M10DT2H30M significa "1 anno, 2 mesi, 10 giorni, 2 ore e 30 minuti." Da notare che M indica i mesi prima di T e i minuti dopo — questa è una fonte comune di bug.

<?php

$date = new DateTime('2022-01-01 00:00:00');
$date->add(new DateInterval('P1Y2M10DT2H30M'));
echo $date->format('Y-m-d H:i:s');
?>

add() modifica l'object originale

DateTime::add() modifica l'object direttamente anziché restituirne uno nuovo. Se è necessario conservare la data originale, usa DateTimeImmutable, che restituisce un nuovo object a ogni operazione:

<?php

$start = new DateTimeImmutable('2022-03-02');
$next  = $start->add(new DateInterval('P1D'));

echo $start->format('Y-m-d'), "\n"; // unchanged
echo $next->format('Y-m-d'), "\n";  // one day later
?>

Sottrarre Tempo dalle Date

Per spostare una data indietro, usa il metodo DateTime::sub() con un DateInterval. Funziona esattamente come add() ma in senso inverso:

<?php

$date = new DateTime('2022-03-02');
$date->sub(new DateInterval('P1M')); // subtract one month
echo $date->format('Y-m-d');
?>

Calcolare la Differenza tra Date

Per trovare quanto distano due date, usa DateTime::diff() (alias procedurale date_diff()). Restituisce un DateInterval che puoi formattare:

<?php

$a = new DateTime('2022-01-01');
$b = new DateTime('2022-03-02');
$diff = $a->diff($b);
echo $diff->format('%a days'); // total days between the two dates
?>

Altre Funzioni di Manipolazione di Date e Ore in PHP

Oltre a DateTime::add(), PHP fornisce diverse altre funzioni per lavorare con date e ore. Alcune di queste includono:

  • strtotime(): Analizza una descrizione testuale di data e ora in inglese e la converte in un timestamp Unix
  • time(): Restituisce il timestamp Unix corrente
  • mktime(): Restituisce il timestamp Unix per una data e un'ora specifiche
  • date_modify(): Modifica un object DateTime usando un formato relativo testuale (es. +1 day)
  • date_sub(): Alias procedurale legacy di DateTime::sub()
  • date_diff(): Calcola la differenza tra due object DateTime

Usare queste funzioni insieme ai metodi di DateTime consente di gestire in modo efficiente diverse operazioni su date e ore.

Conclusione

In questo articolo abbiamo esplorato come manipolare date e ore in PHP. Abbiamo chiarito che la funzione date() viene utilizzata per la formattazione, mentre l'aggiunta o la sottrazione di tempo è gestita al meglio tramite il metodo DateTime::add(). Abbiamo anche esaminato altre funzioni utili come strtotime(), mktime() e date_diff(), e notato che date_add() è un alias procedurale legacy. Usare correttamente questi strumenti ti aiuterà a gestire le operazioni su date e ore in modo affidabile nelle tue applicazioni PHP.

Esercizio

Pratica
Cosa fa la funzione date_add() in PHP?
Cosa fa la funzione date_add() in PHP?
Was this page helpful?