date_timestamp_get()
Scopri come usare date_timestamp_get() in PHP per estrarre il timestamp Unix da un oggetto DateTime con esempi pratici e casi d'uso.
Introduzione
Le funzioni per la gestione di date e orari sono una parte fondamentale dei linguaggi di programmazione. In PHP, gli sviluppatori spesso hanno la necessità di recuperare la data e l'ora correnti o di eseguire operazioni su date e orari. La funzione date_timestamp_get() è una di queste funzioni e viene utilizzata per estrarre il timestamp Unix da un oggetto DateTime. In questo articolo esploreremo in dettaglio la funzione date_timestamp_get() e capiremo come funziona.
Comprensione di date_timestamp_get()
La funzione date_timestamp_get() è una funzione PHP integrata che estrae il timestamp Unix da un oggetto DateTime. Un timestamp Unix è un singolo numero che rappresenta un momento nel tempo: il conteggio dei secondi trascorsi dal 1° gennaio 1970, 00:00:00 UTC (la "Unix epoch").
Un timestamp è sempre un numero basato su UTC. Il fuso orario dell'oggetto DateTime di input viene utilizzato per calcolare il valore, ma il timestamp in sé non memorizza alcun fuso orario — due oggetti DateTime che descrivono lo stesso istante in fusi orari diversi restituiscono lo stesso identico timestamp.
Sintassi
date_timestamp_get(DateTimeInterface $object): int$object— un'istanza diDateTimeoDateTimeImmutable(qualsiasi cosa che implementiDateTimeInterface). Passarenullo un valore non-oggetto genera unTypeErrorin PHP 8+.- Valore restituito — un
int, il timestamp Unix in secondi. (I microsecondi sub-secondo vengono scartati; usa$date->format('U.u')se hai bisogno di essi.)
L'oggetto DateTime può essere creato con la funzione date_create() o il costruttore della classe DateTime. date_timestamp_get($date) è l'alias procedurale della chiamata al metodo $date->getTimestamp().
Esempio di base
Creiamo un oggetto DateTime da una stringa di data, lo passiamo a date_timestamp_get() e stampiamo il timestamp Unix restituito. Per il codice moderno orientato agli oggetti, la forma equivalente (e solitamente preferita) è $date->getTimestamp().
Il fuso orario influisce sul risultato
Poiché un timestamp è un istante UTC assoluto, la stessa stringa di orario produce un timestamp diverso a seconda del fuso orario dell'oggetto:
<?php
$utc = new DateTime('2023-03-03 10:30:00', new DateTimeZone('UTC'));
$tokyo = new DateTime('2023-03-03 10:30:00', new DateTimeZone('Asia/Tokyo'));
echo date_timestamp_get($utc); // 1677839400
echo "\n";
echo date_timestamp_get($tokyo); // 1677807000 (32400s = 9h earlier in UTC)Le 10:30 a Tokyo avvengono 9 ore prima delle 10:30 in UTC, quindi il suo timestamp è di 32400 secondi inferiore. Vedi date_default_timezone_set() per controllare il fuso orario predefinito.
Utilizzo del timestamp nei calcoli
Il vero valore di un timestamp sta nell'aritmetica — una volta che una data è un intero semplice, puoi sottrarre, confrontare e convertirla liberamente:
<?php
$start = date_timestamp_get(date_create('2023-03-03 10:30:00'));
$end = date_timestamp_get(date_create('2023-03-03 12:00:00'));
$diffSeconds = $end - $start;
echo $diffSeconds / 60 . " minutes elapsed"; // 90 minutes elapsedPer riconvertire un timestamp in una stringa formattata, passalo a date() oppure crea un nuovo oggetto con setTimestamp(). Per differenze più ricche tra date (anni, mesi, giorni), preferisci date_diff().
Casi d'uso comuni e insidie
- Memorizzare le date in un database come intero mantiene l'ordinamento e le query per intervalli veloci e indipendenti dal fuso orario.
- Confrontare due momenti è una semplice comparazione tra interi una volta che entrambi sono timestamp.
- Insidia — float vs int: il tipo restituito è
int. Se hai bisogno di precisione ai microsecondi (impostata tramite il costruttore odate_create()con un secondo frazionario),getTimestamp()li tronca; usa inveceformat('U.u'). - Insidia — date precedenti al 1970 producono timestamp negativi, il che è valido ma sorprende il codice che presuppone un numero positivo.
- Operazione inversa: per impostare l'orario di un oggetto a partire da un timestamp, usa
date_timestamp_set().
Conclusione
date_timestamp_get() offre agli sviluppatori PHP un modo semplice e preciso per ridurre un oggetto DateTime a un singolo timestamp Unix UTC — ideale per la memorizzazione, il confronto e l'aritmetica. Per il codice quotidiano orientato agli oggetti, preferisci $date->getTimestamp(); i due sono intercambiabili.