0Pricing
Go Academy · Lezione

Fusi orari

Lavorare con le località

Fusi orari è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Ogni valore temporale ha un fuso orario

Ogni time.Time ha un fuso orario associato. Lo stesso istante può essere visualizzato in modo diverso a seconda del fuso.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.Location())
}

UTC e locale

Due fusi orari integrati sono sempre disponibili:

  • time.UTC per il Tempo coordinato universale.
  • time.Local per il fuso orario locale della macchina.
package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.UTC().Hour())
}

Caricamento di un fuso denominato

time.LoadLocation(name) cerca un fuso IANA come "Europe/Istanbul" o "America/New_York".

package main

import (
    "fmt"
    "time"
)

func main() {
    loc, err := time.LoadLocation("UTC")
    fmt.Println(loc, err)
}

Conversione dei fusi con In

t.In(loc) restituisce lo stesso istante visualizzato in un fuso diverso. L'istante sottostante non cambia: cambia solo il modo in cui viene presentato.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.In(time.UTC).Hour())
}

Stesso istante, orologi diversi

Mezzogiorno UTC è un unico istante, ma chi si trova in un altro fuso vede un'ora diversa sul proprio orologio. La differenza restituita da Sub tra i due valori è zero.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    u := t.UTC()
    fmt.Println(t.Sub(u))
}

Creazione di un valore temporale in un fuso

Passi un fuso orario come ultimo argomento di time.Date per creare direttamente un valore temporale in quel fuso.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc, _ := time.LoadLocation("UTC")
    t := time.Date(2026, 5, 30, 9, 0, 0, 0, loc)
    fmt.Println(t.Hour())
}

Lettura dell'offset del fuso

t.Zone() restituisce l'abbreviazione del fuso e il relativo offset rispetto a UTC, espresso in secondi.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    name, offset := t.Zone()
    fmt.Println(name, offset)
}

Fusi a offset fisso

Quando non servono tutte le regole IANA, time.FixedZone(name, offsetSeconds) crea un fuso semplice con offset costante.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc := time.FixedZone("GMT+3", 3*3600)
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, loc)
    name, off := t.Zone()
    fmt.Println(name, off)
}

Formattazione tra fusi

Converta con In prima di formattare, per visualizzare un timestamp nel fuso del lettore.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc := time.FixedZone("GMT+3", 3*3600)
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.In(loc).Format("15:04 MST"))
}

Memorizzare in UTC, visualizzare in locale

Una regola molto diffusa è: memorizzi ed esegua i calcoli in UTC, quindi converta in un fuso locale solo quando mostra gli orari agli utenti. In questo modo evita ambiguità.

package main

import (
    "fmt"
    "time"
)

func main() {
    stored := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
    loc := time.FixedZone("GMT+2", 2*3600)
    fmt.Println("shown:", stored.In(loc).Hour())
}

Gestione degli errori di caricamento

LoadLocation può non riuscire se il database dei fusi è mancante o il nome è sconosciuto. Controlli sempre l'errore.

package main

import (
    "fmt"
    "time"
)

func main() {
    _, err := time.LoadLocation("Mars/Olympus")
    if err != nil {
        fmt.Println("unknown zone")
    }
}

Verifica rapida

Che cosa cambia t.In(loc)?

Riepilogo: fusi orari

Ha imparato a lavorare con i fusi orari:

  • Ogni valore temporale ha un fuso orario; UTC e Local sono integrati.
  • Carichi i fusi denominati con LoadLocation oppure crei offset con FixedZone.
  • Converta con In; memorizzi in UTC e visualizzi in locale.
package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 15, 0, 0, 0, time.UTC)
    loc := time.FixedZone("GMT-5", -5*3600)
    fmt.Println(t.In(loc).Format("15:04 MST"))
}

Domande Frequenti

La lezione «Fusi orari» è gratuita?

Sì — il testo completo di «Fusi orari» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Fusi orari»?

Lavorare con le località Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Fusi orari»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Tempo e durata
  2. Formattazione e parsing
  3. Timer e ticker
  4. Fusi orari
← Torna a Go Academy