timezone_name_from_abbr()
Scopri la sintassi, i parametri e il valore restituito della funzione PHP timezone_name_from_abbr() con esempi pratici.
Introduzione
In questo articolo tratteremo la sintassi, i parametri e il valore restituito della funzione PHP timezone_name_from_abbr(), insieme ad esempi pratici del suo utilizzo.
Comprendere la funzione PHP timezone_name_from_abbr()
La funzione timezone_name_from_abbr() in PHP restituisce il nome completo del fuso orario IANA (ad esempio America/New_York) che corrisponde a una determinata abbreviazione (ad esempio EST). Restituisce il nome del fuso orario in caso di successo oppure false in caso di errore.
Questa è l'operazione inversa rispetto alla ricerca di un'abbreviazione per una zona nota. Un caso d'uso comune è l'analisi di una stringa di data in cui è disponibile solo l'abbreviazione (ad esempio, una riga di log contenente EST) e si ha bisogno di un identificatore di zona canonico per costruire un DateTimeZone.
Nota: Questa funzione è notoriamente inaffidabile perché molte abbreviazioni di fusi orari sono ambigue o non standard — EST, IST e CST si mappano ciascuna su diverse regioni del mondo. Il manuale PHP raccomanda di utilizzare DateTimeZone per le applicazioni in produzione. Quando si utilizza timezone_name_from_abbr(), fornire sempre il parametro $gmtOffset in modo che PHP possa disambiguare tra zone che condividono la stessa abbreviazione.
Sintassi
La sintassi della funzione timezone_name_from_abbr() è la seguente:
Sintassi della funzione PHP timezone_name_from_abbr()
<?php
string|false timezone_name_from_abbr(string $abbr, int $gmtOffset = -1, int $isdst = -1)Parametri
La funzione accetta tre parametri come segue:
$abbr- Il nome abbreviato del fuso orario (ad esempio,ESToCEST). Non fa distinzione tra maiuscole e minuscole.$gmtOffset- L'offset GMT del fuso orario in secondi (non in ore). Questo parametro è facoltativo, ma altamente raccomandato. Se non fornito (-1), PHP indovina in base al solo$abbr, il che potrebbe restituirefalseo un fuso orario errato a causa di abbreviazioni ambigue.$isdst- Un flag che indica se l'ora legale è in vigore:1per l'ora legale,0per l'ora solare,-1(valore predefinito) per ignorare. Quando impostato, vengono considerate solo le zone che corrispondono a quello stato DST.
Un modo pratico per calcolare l'offset in secondi è ore × 3600 — ad esempio, UTC−5 è -5 * 3600 = -18000.
Valore Restituito
La funzione timezone_name_from_abbr() restituisce il nome del fuso orario (una stringa come America/New_York) in caso di successo, oppure false in caso di errore quando nessuna zona corrisponde all'abbreviazione e all'offset forniti.
Esempi
Vediamo alcuni esempi pratici di come la funzione timezone_name_from_abbr() può essere utilizzata in PHP.
Esempio di utilizzo della funzione timezone_name_from_abbr() in PHP
Negli esempi precedenti, stiamo passando i nomi abbreviati dei fusi orari EST e PST insieme ai rispettivi offset GMT in secondi. La funzione restituisce i corrispondenti nomi completi dei fusi orari, rispettivamente America/New_York e America/Los_Angeles. Verificare sempre la presenza di false per gestire i casi in cui l'abbreviazione non è riconosciuta.
Il risultato può quindi essere passato direttamente a un DateTimeZone per eseguire calcoli reali sulle date:
<?php
$name = timezone_name_from_abbr('CET', 3600); // "Europe/Berlin"
$date = new DateTime('2024-01-15 12:00', new DateTimeZone($name));
echo $date->format('Y-m-d H:i T'); // outputs "2024-01-15 12:00 CET"Funzioni correlate
timezone_abbreviations_list()- elenca tutte le abbreviazioni conosciute da PHP, con offset e nomi delle zone.timezone_identifiers_list()- restituisce tutti gli identificatori di fuso orario IANA validi.date_default_timezone_set()- imposta il fuso orario predefinito per tutte le funzioni data/ora.
Conclusione
Abbiamo trattato la sintassi e l'utilizzo della funzione PHP timezone_name_from_abbr(). Questa funzione può convertire i nomi abbreviati dei fusi orari nei loro identificatori completi, ma poiché le abbreviazioni sono ambigue è sempre consigliabile fornire $gmtOffset e preferire DateTimeZone per applicazioni robuste. Speriamo che questo articolo sia stato utile.