Rückkehr lokalen Anfang des Tages Zeit, die Objekt in Go
Um ein lokales Anfang der heutigen Zeit, Objekt, ich YMD-Extrakt und rekonstruieren Sie das neue Datum ein. Das sieht aus wie ein Durcheinander. Vermisse ich einige andere standard-Bibliothek-Funktion?
code auch ausführbar bei http://play.golang.org/p/OSRl0nxyB7 :
func Bod(t time.Time) time.Time {
year, month, day := t.Date()
return time.Date(year, month, day, 0, 0, 0, 0, t.Location())
}
func main() {
fmt.Println(Bod(time.Now()))
}
- LGTM. Das ist der richtige Weg, es zu tun.
- Weinberg, fühlt sich an wie ein date-Grenze kann als ein Zwischenergebnis der die Funktion Date (), fragte ich mich, ob eine andere Funktion, die Verknüpfungen re-Montage. OK dann...
- Antwort, dass Sie akzeptiert nicht tun, was Sie gefragt haben. Siehe meine Antwort für details.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowohl der Titel und der text der Frage für ein "lokale [Chicago] Anfang der heutigen Zeit." Die
Bod
Funktion in der Frage war das richtig. Die akzeptiertTruncate
- Funktion behauptet, eine bessere Lösung, aber es gibt ein anderes Ergebnis; es nicht wieder eine lokale [Chicago] Anfang der heutigen Zeit. Zum Beispiel,Ausgabe:
Den
time.Truncate
Methode schneidet der UTC-Zeit.Den akzeptiert
Truncate
- Funktion auch davon ausgegangen, dass es 24 Stunden an einem Tag. Chicago hat es mit 23, 24 oder 25 Stunden in einem Tag.EDIT: Dies funktioniert nur für UTC-Zeiten (es wurde getestet, auf dem Spielplatz, so dass die Lage-spezifischer test war wohl falsch). Sehen PeterSO ' s Antwort für die Probleme dieser Lösung im Standort-spezifischen Szenarien.
Können Sie die
Truncate
Methode auf das Datum, mit24 * time.Hour
duration:http://play.golang.org/p/zJ8s9-6Pck
Fügen Sie einige Erklärung, es funktioniert, weil truncate "rundet ab zu einem vielfachen von" die angegebene Dauer seit der zero-Zeit, und die null-Zeit ist der 1. Januar, Jahr 1, 00:00:00. So eine Rundung auf die nächste 24-Stunden-Grenze gibt immer einen "Anfang des Tages".
Truncate()
doc, dass die Berechnung durchgeführt wird", da die null-Zeit", und in derTime
Art docs, dass "Die null Wert vom Typ Zeit ist der 1. Januar, Jahr 1, 00:00:00.000000000 UTC." Das Ergebnis scheint unintuitiv auf den ersten, aber funktioniert wie beschrieben: vielen Dank für das zeigen dieser Funktion war ich mir dessen nicht bewusst, aber die Antwort da ist, scheint nicht zu gelten. Die Anwendung truncate ist interessant und lohnt sich, Beispiele und Bewusstsein von sich selbst. Einige Beispiele: play.golang.org/p/5_wzfsrn-d