W3docs

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 di DateTime o DateTimeImmutable (qualsiasi cosa che implementi DateTimeInterface). Passare null o un valore non-oggetto genera un TypeError in 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

php— editable, runs on the server

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 elapsed

Per 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 o date_create() con un secondo frazionario), getTimestamp() li tronca; usa invece format('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.

Pratica

Pratica
In PHP, quale funzione può essere usata per ottenere il timestamp corrente?
In PHP, quale funzione può essere usata per ottenere il timestamp corrente?
Was this page helpful?