Heim >Backend-Entwicklung >Golang >Wie gelingt der lokale Start in den Tag in Go?

Wie gelingt der lokale Start in den Tag in Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-11 02:47:03601Durchsuche

 How to Get the Local Start of Day in Go?

Lokalisieren des Beginns eines lokalen Tages

Um ein lokales Tagesanfangszeitobjekt abzurufen, besteht ein gängiger Ansatz darin, das zu extrahieren Jahres-, Monats- und Tageskomponenten und rekonstruieren das Datum. Gibt es jedoch eine orthodoxere Funktion, die von der Standardbibliothek bereitgestellt wird?

Das folgende Snippet zeigt eine benutzerdefinierte Bod-Funktion, die diese Aufgabe ausführt:

func Bod(t time.Time) time.Time {
    year, month, day := t.Date()
    return time.Date(year, month, day, 0, 0, 0, 0, t.Location())
}

Während die Bod-Funktion das Lokal korrekt bestimmt Ab heute liefert die alternativ vorgeschlagene Truncate-Funktion ein anderes Ergebnis. Um dies zu untersuchen, betrachten Sie den folgenden Code:

chicago, err := time.LoadLocation("America/Chicago")
if err != nil {
    fmt.Println(err)
    return
}
now := time.Now().In(chicago)
fmt.Println(Bod(now))
fmt.Println(Truncate(now))

Dieser Code generiert die folgende Ausgabe:

2014-08-11 00:00:00 -0400 EDT
2014-08-11 20:00:00 -0400 EDT

Es wird deutlich, dass die Truncate-Methode auf UTC-Zeit arbeitet, während die Bod-Funktion Behält die Ortszeit (Chicago) bei. Darüber hinaus geht Truncate von einem konstanten 24-Stunden-Tag aus, was für Orte wie Chicago, an denen es Schwankungen in der Sommerzeit gibt, ungenau ist.

Das obige ist der detaillierte Inhalt vonWie gelingt der lokale Start in den Tag in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn