W3docs

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, EST o CEST). 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 restituire false o un fuso orario errato a causa di abbreviazioni ambigue.
  • $isdst - Un flag che indica se l'ora legale è in vigore: 1 per l'ora legale, 0 per 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

php— editable, runs on the server

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

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.

Pratica

Pratica
Cosa restituisce la funzione timezone_name_from_abbr() in PHP?
Cosa restituisce la funzione timezone_name_from_abbr() in PHP?
Was this page helpful?