Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

Zeitzonen sind entscheidend für jede Anwendung, die mit Daten und Uhrzeiten zu tun hat. Dies gilt natürlich insbesondere für Apps, die Benutzer über Kontinente und Standorte hinweg bedienen. Zeitzonen bestimmen die Abweichung von der koordinierten Weltzeit (UTC) für bestimmte Orte auf der ganzen Welt. Sie spielen eine wichtige Rolle bei der Gewährleistung einer genauen und zuverlässigen Zeiterfassung.

Für die Arbeit mit Zeit und Zeitzonen stellt Go in seiner Standardbibliothek das Zeitpaket zur Verfügung. Mit dem Zeitpaket können Sie Zeitzonen an verschiedenen Orten abrufen und umrechnen.

Das Zeitpaket

Der Zeit Paket bietet Funktionen für Arbeiten mit Zeiten und Daten, Messen und Anzeigen von Zeit und Manipulieren von Daten mit einem gregorianischen Kalender ohne Schaltsekunden.

Das Zeitpaket bietet a ZeitStrukturtyp mit dem Standortfeld, mit dem Sie Zeitzonen festlegen können.

Sie können das Zeitpaket mit einer Importanweisung importieren.

importieren"Zeit"

Hier ist der Zeitstrukturtyp und seine Felder. Die Felder sind nicht exportiert, daher fehlen sie in der offiziellen Dokumentation.

Paket hauptsächlich

Typ Zeit Struktur {
// Wand ist die Wandzeit in dem von runtime.nanotime() zurückgegebenen Format
// Funktion.
Wand uint64

// ext ist der monotone Taktwert im zurückgegebenen Format
// Laufzeit.nanotime().
ext int64

// loc ist ein Zeiger auf die Location-Struktur, die dieser Zeit zugeordnet ist.
loc *Ort
}

Typ Standort Struktur {
// name ist der Name der Zeitzone, z. B. "UTC" oder "PST".
Name Schnur

// zone enthält Informationen über Zeitzonenkürzel, Offset,
// und Regel für eine einzelne Zeitzone am Standort.
Zone []Zone

// tx enthält Informationen darüber, wann das Zeitzonenkürzel bzw
// Offset-Änderungen für einen Standort.
tx []zoneTrans

// Erweitern enthält den Namen einer übergeordneten Zeitzone, wenn dieser Standort vorhanden ist
// erstreckt sich von einem anderen.
erweitern Schnur

// cacheStart und cacheEnd sind Unix-Zeitstempel, die den Bereich definieren
// für die das CacheZone-Feld gültig ist.
cacheStart int64
cacheEnde int64

// cacheZone zeigt auf die aktuell für die Zeit gültige Zone
// Bereich definiert durch cacheStart und cacheEnd.
cacheZone *zone
}

Viele Methoden verwenden die Zeit und Standort Strukturen, einschließlich der Zeitzonenmethoden.

Zeitzoneninformationen werden geladen

Das Laden von Zeitzoneninformationen ist eine der grundlegenden Operationen bei der Arbeit mit Zeitzonen. Der Standort laden -Methode bietet Funktionen zum Laden von Zeitzoneninformationen aus der IANA-Zeitzonendatenbank. Der Standort laden -Methode übernimmt den Namen der Zeitzone und gibt die Standortinformationen und einen Fehler für die Behandlung zurück. Sobald es die Zeitzoneninformationen geladen hat, erstellt es eine Zeit struct-Instanz, die der Zeitzone zugeordnet ist.

importieren (
"fmt"
"Zeit"
)

Funkhauptsächlich() {
// Laden Sie den Zeitzonenstandort für Amerika/New_York
loc, err := Zeit. Ladeort("Amerika/New_York")

Wenn äh != Null {
fmt. Println("Fehler beim Laden des Speicherorts:", irren)
zurückkehren
}

// Holen Sie sich die aktuelle Zeit an einem Ort
jetzt := Zeit. Now().In (loc)
fmt. Println("Aktuelle Zeit in New York:", Jetzt)
}

Der In Methode der Jetzt Die Funktion nimmt einen Ort auf und gibt dort die Zeit aus:

Zusätzlich können Sie die verwenden FixedZone -Methode zum Laden der aktuellen Uhrzeit an einem Ort, wenn Sie die Ortszeichenfolge und den Offset der Zeitzone von UTC kennen. Zuerst müssen Sie die aktuelle Uhrzeit in UTC laden, und dann verwenden Sie die FixedZone-Methode, um die zu laden Ort basierend auf der Zeichenfolge und dem Offset, bevor der Ort an die In-Methode der Zeit übergeben wird Beispiel.

importieren (
"fmt"
"Zeit"
)

Funkhauptsächlich() {
// Holen Sie sich die aktuelle Uhrzeit in UTC
jetzt := Zeit. Jetzt().UTC()

// Legen Sie die Zeitzone für Lagos fest
lagos := jetzt. Rechtzeitig. FesteZone("WAS", 3600))

// Gibt die aktuelle Zeit an beiden Orten aus
fmt. Println("Aktuelle Uhrzeit in Lagos:", Lagos)
}

Der hauptsächlich Funktion gibt die aktuelle Zeit in Lagos auf der Konsole aus.

Zeitzonendauer messen

Das Zeitpaket bietet die Zone Verfahren zum Abrufen der Abkürzung und des Offsets der Zeitzone, die a zugeordnet ist Zeit. Zeit Wert. Die Zone-Methode gibt die Zeichenfolge zurück, die die Abkürzung der Zeitzone darstellt (z. B. „EST“ für „America/New_York“), und eine Ganzzahl, die die Anzahl der Sekunden östlich der UTC darstellt.

importieren (
"fmt"
"Zeit"
)

Funkhauptsächlich() {
// Laden Sie den Zeitzonenstandort für Amerika/New_York
loc, err := Zeit. Ladeort("Amerika/New_York")

Wenn äh != Null {
fmt. Println("Fehler beim Laden des Speicherorts:", irren)
zurückkehren
}

// Holen Sie sich die aktuelle Zeit in UTC und den angegebenen Ort
t1 := Zeit. Jetzt()
t2 := t1.In (loc)

// Erhalte den Offset in Sekunden für jede Zeitzone
//für die Zeitzonen
_, offset1 := t1.Zone()
_, offset2 := t2.Zone()

// Berechnen Sie die Dauer der Zeitzonenverschiebung
// zwischen UTC und Amerika/New_York
Dauer := offset2 - offset1

fmt. Druckenf("Die Dauer der Zeitzonenverschiebung" +
"zwischen UTC und New York liegen: %d Sekunden", Dauer)
}

In der Hauptfunktion misst die Zonenmethode die Dauer der Zeitzonenverschiebung zwischen zwei Zeitzonen (time. Zeitwerte). Der t1 Variable ist die aktuelle Zeit in UTC, und die t2 Variable ist die aktuelle Uhrzeit in der Zeitzone "America/New_York".

Die Funktion druckt die Dauer Variable (der Unterschied im Versatz zwischen den Zeitzonen), die die Zeitzonenverschiebung in Sekunden darstellt.

Auswertung der Zeit zwischen Zeitzonen

Sie können die Zeit zwischen Zeitzonen auswerten, wenn Sie die Dauer zwischen den Zeitzonen kennen. Du kannst den... benutzen Hinzufügen Methode der In-Methode Ihrer Zeit. Time-Strukturinstanz, um der Zeit in einer Zeitzone eine Dauer hinzuzufügen.

importieren (
"Protokoll"
"Zeit"// Zeitpaket importieren
)

FunkauswertenZeit(Zeit. Zeit, Zeitdauer. Dauer)Zeit.Zeit {
// Lade den Ort für Afrika/Lagos
Ort, ähm := Zeit. Ladeort("Afrika/Lagos")

Wenn äh != Null {
Protokoll. Println("Beim Laden des Standorts ist ein Fehler aufgetreten")
}

zurückkehren T. In (Ort).Hinzufügen (Dauer)
}

Der auswertenZeit Funktion dauert eine Weile. Zeitinstanz und eine Dauer vom Typ Zeit. Dauer, gibt die Zeit in der Zeitzone zurück. Es lädt die aktuelle Zeit in "Afrika/Lagos" und fügt der Zeit eine Dauer hinzu.

Manipulieren Sie Uhrzeit und Datum mit dem Time-Paket

Das Zeitpaket ist sehr vielseitig, um sowohl mit Zeiten als auch mit Datumsangaben zu arbeiten. Das time-Paket bietet Funktionen wie Unix() zum Konvertieren von Zeit in Unix-Zeit, Sleep() zum Anhalten von Goroutinen und Format() zum Formatieren von Zeitwerten in Strings.