Ich habe einen time.Time
Wert von erhalten time.Now()
und möchte eine andere Zeit erhalten, die genau 1 Monat her ist.
Ich weiß, dass Subtrahieren mit möglich ist time.Sub()
(was einen anderen will time.Time
), aber das führt zu a time.Duration
und ich brauche es umgekehrt.
Sub
Zeit subtrahieren. Duh!Als Antwort auf den Kommentar von Thomas Browne, da die Antwort von lnmx nur zum Subtrahieren eines Datums funktioniert, ist hier eine Modifikation seines Codes, die zum Subtrahieren der Zeit von einer Zeit funktioniert. Zeittyp.
Produziert:
Ganz zu schweigen davon, dass Sie auch
time.Hour
odertime.Second
anstelletime.Minute
Ihrer Bedürfnisse verwenden können.Spielplatz: https://play.golang.org/p/DzzH4SA3izp
quelle
ParseDuration
für statische Werte! Verwenden Sie einfach-10 * time.Minute
, dafür sind diese Konstanten definiert. ZB ist einfachtime.Now().Add(-10 * time.Minute)
alles was du brauchst.now.Add(-10 * time.Minute)
,now.Add(time.Duration(-10) * time.Minute)
falls Sie beim Multiplizieren einer Dauer mit einem int-Wert einen Fehler erhalten ...Sie können Folgendes negieren
time.Duration
:Sie können sogar ein
time.Duration
gegen vergleichen0
:Ein funktionierendes Beispiel finden Sie unter http://play.golang.org/p/ml7svlL4eW
quelle
-1 * dur
,d := -1 ; dur = d * dur
generiert jedoch einen Fehler: "Nicht übereinstimmende Typen int und time.Duration"Es gibt,
time.ParseDuration
die gerne negative Dauern akzeptieren, wie im Handbuch beschrieben . Andernfalls müssen Sie keine Dauer negieren, bei der Sie zunächst eine genaue Dauer erhalten können.Wenn Sie beispielsweise anderthalb Stunden abziehen müssen, können Sie dies folgendermaßen tun:
https://play.golang.org/p/63p-T9uFcZo
quelle