Zeitzonen
Mit Zeitzonen umgehen
Zeitzonen ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ruby Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Zeitzonen wichtig sind
Je nach Ort sieht derselbe Zeitpunkt anders aus. Ein falscher Umgang mit Zeitzonen führt zu Fehlern mit einer Abweichung von mehreren Stunden. Deshalb müssen Sie ausdrücklich angeben, welche Zeitzone eine Zeitangabe verwendet.
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.zone || t.utc_offset)
puts(t.utc_offset)UTC: Die Referenzzeitzone
UTC (Coordinated Universal Time) ist die globale Referenz. Speichern und berechnen Sie Zeiten in UTC und konvertieren Sie sie erst für die Anzeige.
t = Time.utc(2026, 5, 30, 9, 0, 0)
puts(t.utc?)
puts(t.hour)Lokale Zeit
Time.now und Time.local verwenden die lokale Zeitzone des Rechners. Der Abstand zu UTC wird von utc_offset in Sekunden angegeben.
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.utc_offset)
puts(t.utc_offset / 3600)In UTC konvertieren
getutc (Alias utc) gibt denselben Zeitpunkt in UTC zurück. Die Uhrzeit ändert sich, der Zeitpunkt bleibt jedoch identisch.
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.hour)
puts(t.getutc.hour)In einen lokalen Offset konvertieren
getlocal akzeptiert eine explizite Offset-Zeichenkette und gibt den Zeitpunkt in dieser Zeitzone zurück.
t = Time.utc(2026, 5, 30, 9, 0, 0)
istanbul = t.getlocal('+03:00')
puts(istanbul.hour)Offset beim Erstellen angeben
Übergeben Sie eine Offset-Zeichenkette als letztes Argument an Time.new, um die Zeitzone beim Erstellen festzulegen.
ny = Time.new(2026, 5, 30, 8, 0, 0, '-04:00')
puts(ny.utc_offset / 3600)
puts(ny.getutc.hour)Gleicher Zeitpunkt, verschiedene Uhren
Zwei Zeitangaben in verschiedenen Zeitzonen können denselben exakten Zeitpunkt darstellen. Beim Vergleich wird der zugrunde liegende Zeitpunkt verwendet, daher sind sie gleich.
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)Offsets in ISO 8601
ISO-8601-Zeitstempel enthalten den Offset, beispielsweise +03:00 oder Z für UTC. Dadurch sind sie systemübergreifend eindeutig.
require 'time'
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.iso8601)
puts(t.getutc.iso8601)Zeichenketten mit Zeitzone parsen
Time.parse berücksichtigt einen Offset, der in der Eingabezeichenkette enthalten ist.
require 'time'
t = Time.parse('2026-05-30T12:00:00+03:00')
puts(t.utc_offset / 3600)
puts(t.getutc.hour)Best Practice: UTC speichern
Das sicherste Vorgehen ist: UTC speichern, Berechnungen in UTC durchführen und erst bei der Anzeige in die Zeitzone des Benutzers konvertieren. Dadurch vermeiden Sie Mehrdeutigkeiten vollständig.
stored = Time.utc(2026, 5, 30, 9, 0, 0)
display = stored.getlocal('+03:00')
puts("UTC #{stored.hour} -> Local #{display.hour}")Vorsicht bei der Sommerzeit
Ein fester Offset wie +03:00 berücksichtigt die Sommerzeit nicht. Für benannte Zeitzonen mit Sommerzeitregeln werden Bibliotheken wie das tzinfo-Gem benötigt. Die zentrale Klasse Time kennt nur feste Offsets.
t = Time.new(2026, 7, 1, 12, 0, 0, '+02:00')
puts(t.utc_offset / 3600)Schnelltest
Welche Strategie wird für den Umgang mit Zeitzonen in einer Anwendung empfohlen?
Zusammenfassung: Zeitzonen
Sie haben gelernt, korrekt mit Zeitzonen umzugehen:
- UTC ist die globale Referenz
getutcundgetlocalkonvertieren, ohne den Zeitpunkt zu ändern- Offsets werden beim Erstellen oder in ISO-8601-Zeichenketten festgelegt
- Der gleiche Zeitpunkt in verschiedenen Zeitzonen wird als gleich verglichen
- UTC speichern, lokale Zeit anzeigen; feste Offsets berücksichtigen die Sommerzeit nicht
require 'time'
puts(Time.utc(2026,5,30,9).getlocal('+03:00').hour)Häufig gestellte Fragen
Ist die Lektion „Zeitzonen“ kostenlos?
Ja — der vollständige Text von „Zeitzonen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ruby Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Zeitzonen“?
Mit Zeitzonen umgehen Du übst Ruby Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ruby Academy zu starten?
Keine Vorkenntnisse erforderlich. Ruby Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Zeitzonen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ruby Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ruby Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.