0Pricing
Ruby Academy · Lezione

Fusi orari

Gestire i fusi orari

Fusi orari è una lezione Ruby 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 Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.

Perché i fusi orari sono importanti

Lo stesso istante appare in modo diverso a seconda della posizione. La gestione errata dei fusi orari causa errori di alcune ore, quindi è necessario specificare sempre quale fuso utilizza un orario.

t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.zone || t.utc_offset)
puts(t.utc_offset)

UTC: il fuso di riferimento

UTC (Coordinated Universal Time) è il riferimento globale. Memorizzi ed esegua i calcoli in UTC, quindi converta l'orario per la visualizzazione.

t = Time.utc(2026, 5, 30, 9, 0, 0)
puts(t.utc?)
puts(t.hour)

Ora locale

Time.now e Time.local utilizzano il fuso locale della macchina. Lo scostamento rispetto a UTC è indicato da utc_offset in secondi.

t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.utc_offset)
puts(t.utc_offset / 3600)

Convertire in UTC

getutc (alias utc) restituisce lo stesso istante espresso in UTC. L'ora visualizzata cambia, ma l'istante rimane identico.

t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.hour)
puts(t.getutc.hour)

Convertire in uno scostamento locale

getlocal accetta una stringa di scostamento esplicita e restituisce l'istante in quel fuso.

t = Time.utc(2026, 5, 30, 9, 0, 0)
istanbul = t.getlocal('+03:00')
puts(istanbul.hour)

Specificare lo scostamento durante la creazione

Passi una stringa di scostamento come ultimo argomento a Time.new per fissare il fuso durante la creazione.

ny = Time.new(2026, 5, 30, 8, 0, 0, '-04:00')
puts(ny.utc_offset / 3600)
puts(ny.getutc.hour)

Stesso istante, orologi diversi

Due orari in fusi diversi possono rappresentare esattamente lo stesso istante. Il confronto utilizza l'istante sottostante, quindi i due valori sono uguali.

a = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
b = Time.new(2026, 5, 30, 9, 0, 0, '+00:00')
puts(a == b)

Scostamenti in ISO 8601

I timestamp ISO 8601 incorporano lo scostamento (ad esempio +03:00 o Z per UTC), rendendoli non ambigui tra sistemi diversi.

require 'time'
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.iso8601)
puts(t.getutc.iso8601)

Analizzare stringhe con il fuso orario

Time.parse rispetta lo scostamento presente nella stringa di input.

require 'time'
t = Time.parse('2026-05-30T12:00:00+03:00')
puts(t.utc_offset / 3600)
puts(t.getutc.hour)

Buona pratica: memorizzare in UTC

Il modello più sicuro è: memorizzare in UTC, eseguire i calcoli in UTC e convertire nel fuso dell'utente solo al momento della visualizzazione. In questo modo si evita completamente l'ambiguità.

stored = Time.utc(2026, 5, 30, 9, 0, 0)
display = stored.getlocal('+03:00')
puts("UTC #{stored.hour} -> Local #{display.hour}")

Attenzione all'ora legale

Uno scostamento fisso come +03:00 ignora l'ora legale. Per i fusi con nome e regole per l'ora legale sono necessarie librerie come la gem tzinfo; la classe Time di base conosce solo scostamenti fissi.

t = Time.new(2026, 7, 1, 12, 0, 0, '+02:00')
puts(t.utc_offset / 3600)

Verifica rapida

Qual è la strategia consigliata per gestire i fusi orari in un'applicazione?

Riepilogo: fusi orari

Ha imparato a gestire correttamente i fusi:

  • UTC è il riferimento globale
  • getutc e getlocal convertono senza modificare l'istante
  • Gli scostamenti vengono impostati durante la creazione o nelle stringhe ISO 8601
  • Lo stesso istante in fusi diversi risulta uguale nel confronto
  • Memorizzi in UTC e visualizzi nell'ora locale; gli scostamenti fissi ignorano l'ora legale
require 'time'
puts(Time.utc(2026,5,30,9).getlocal('+03:00').hour)

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 Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.

Cosa imparerò in «Fusi orari»?

Gestire i fusi orari Eserciti Ruby 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 Ruby Academy?

Non è richiesta alcuna esperienza precedente. Ruby 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 Ruby Academy?

Sì. Ogni lezione Ruby 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. Classi per data e ora
  2. Parsing e formattazione
  3. Aritmetica temporale
  4. Fusi orari
← Torna a Ruby Academy