Hinzufügen von Tagen zu Datum Gehen
Ich versuche zum hinzufügen einer Anzahl von Tagen (eigentlich Wochen) zu einem bestehenden Datum in Gehen. Ich habe versucht,
myDate.Add(time.Hour * 24 * 7 * weeksToAdd)
Aber ich erhalte eine Fehlermeldung, wenn ich versuche zu bauen: invalid operation: time.Hour * startAdd (mismatched types time.Duration and float64)
So weeksToAdd
ist derzeit ein float64
, aber ändern kann ich es ein int oder was auch immer. Ändern Sie es zu einem int nur verändert, meine Fehler zu sagen, dass int
und Duration
können nicht multipliziert werden.
Wie füge ich die Tage ein date?
InformationsquelleAutor Ben Walker | 2015-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
Zeit.AddDate()
:InformationsquelleAutor kostix
Müssen Sie konvertieren
weeksToAdd
in einetime.Duration
:In Gehen, type Aliase können nicht austauschbar verwendet werden, obwohl
time.Duration
ist technisch einint64
.Auch hier, obwohl die numerischen Konstanten 24 und 7 sind nicht explizit typisiert ist, können Sie immer noch verwendet werden, siehe https://blog.golang.org/constants für eine ausführliche Erläuterung.
Sehen http://play.golang.org/p/86TFFlixWj für ein laufendes Beispiel.
Wie bereits erwähnt in den Kommentaren und eine weitere Antwort, die die Verwendung von
time.AddDate()
vorzuziehen isttime.Add()
beim arbeiten auf Dauer überlegen zu 24 Stunden, datime.Duration
im Grunde stellt Nanosekunden. Bei der Arbeit mit Tagen, Wochen, Monaten und Jahren viel Pflege muss sein genommen, weil Dinge wie Sommerzeit mal, Schaltjahre, und vielleicht potenziell Schaltsekunden.In der Dokumentation für
time.Duration
Typ und die dazugehörigen Konstanten repräsentieren Einheiten betonen, dieses Problem (https://golang.org/pkg/time/#Duration):Nun, es ist wahr, und ich habe die Feste Beispiel, aber das ist neben dem Punkt hier.
Sollten Sie verwenden
AddDate
wie vorgeschlagen von @kostix. MitAdd
für Tage oder Wochen wird nicht korrekt funktionieren mit DST und Schaltsekunden. Dies ist der Grund, warum es keinetime.Duration
definiert für einen Tag oder eine Woche.verwenden Sie Zeit.Sub, es ist direkt dort in der doc.
Sie schreiben konnte
myDate.Add(-time.Hour * 24)
InformationsquelleAutor SirDarius