Parsing delle date in PHP

Il parsing delle date è un'operazione comune nello sviluppo web, specialmente quando si lavora con input da utenti o dati provenienti da API. PHP offre diverse funzioni e classi per interpretare stringhe rappresentanti date e convertirle in oggetti o timestamp utilizzabili.

1. Utilizzo di DateTime

Il modo più flessibile e moderno per effettuare il parsing delle date in PHP è tramite la classe DateTime. Questa classe permette di creare oggetti data/ora a partire da una stringa, secondo formati standard o personalizzati.


$date = new DateTime('2025-07-23 15:30:00');
echo $date->format('d/m/Y H:i');

Se la stringa non è valida, PHP lancerà un'eccezione. È quindi buona pratica usare un blocco try/catch:


try {
    $date = new DateTime('invalid-date');
} catch (Exception $e) {
    echo 'Errore nel parsing: ' . $e->getMessage();
}

2. Parsing con formati personalizzati

Per stringhe con formati non standard, si può usare il metodo DateTime::createFromFormat(), specificando il formato atteso:


$format = 'd/m/Y H:i';
$dateString = '23/07/2025 15:30';
$date = DateTime::createFromFormat($format, $dateString);

if ($date && $date->format($format) === $dateString) {
    echo 'Parsing riuscito: ' . $date->format('Y-m-d H:i:s');
} else {
    echo 'Formato non valido';
}

3. Funzioni legacy: strtotime()

PHP fornisce anche la funzione strtotime(), utile per semplici conversioni. Questa funzione interpreta stringhe in linguaggio naturale:


$timestamp = strtotime('next Monday');
echo date('Y-m-d', $timestamp);

Nonostante la sua semplicità, strtotime() può dare risultati inattesi con formati ambigui. È consigliato preferire DateTime nei contesti più critici.

4. Gestione del fuso orario

Il parsing può essere influenzato dal fuso orario. La classe DateTime accetta un secondo parametro per specificare il fuso desiderato:


$tz = new DateTimeZone('Europe/Rome');
$date = new DateTime('2025-07-23 15:30:00', $tz);
echo $date->format('c');

Conclusione

PHP offre strumenti potenti per il parsing delle date. Per applicazioni moderne, è consigliato utilizzare la classe DateTime per la sua flessibilità, robustezza e supporto per i fusi orari. Le funzioni come strtotime() restano utili in scenari semplici ma vanno usate con cautela.

Torna su