J'ai une time.Time
valeur obtenue à partir de time.Now()
et je veux obtenir une autre heure, il y a exactement 1 mois.
Je sais que soustraire est possible avec time.Sub()
(qui en veut un autre time.Time
), mais cela se traduira par un time.Duration
et j'en ai besoin dans l'autre sens.
Sub
pour soustraire le temps. Duh!En réponse au commentaire de Thomas Browne, parce que la réponse de lnmx ne fonctionne que pour soustraire une date, voici une modification de son code qui fonctionne pour soustraire le temps d'un type time.Time.
Produit:
Sans oublier, vous pouvez également utiliser
time.Hour
ou à latime.Second
place detime.Minute
selon vos besoins.Aire de jeu: https://play.golang.org/p/DzzH4SA3izp
la source
ParseDuration
de valeurs statiques! Utilisez simplement-10 * time.Minute
, c'est pour cela que ces constantes sont définies. Par exemple,time.Now().Add(-10 * time.Minute)
c'est tout ce dont vous auriez besoin.now.Add(-10 * time.Minute)
ànow.Add(time.Duration(-10) * time.Minute)
au cas où votre obtenir une erreur lors de la multiplication d' une durée d'une valeur int ...Vous pouvez annuler un
time.Duration
:Vous pouvez même comparer un
time.Duration
contre0
:Vous pouvez voir un exemple de travail sur http://play.golang.org/p/ml7svlL4eW
la source
-1 * dur
fonctionnera, maisd := -1 ; dur = d * dur
générera une erreur: "types incompatibles int et time.Duration"Il y en a
time.ParseDuration
qui accepteront volontiers les durées négatives, selon le manuel . Autrement dit, il n'est pas nécessaire d'annuler une durée où vous pouvez obtenir une durée exacte en premier lieu.Par exemple, lorsque vous devez soustraire une heure et demie, vous pouvez le faire comme suit:
https://play.golang.org/p/63p-T9uFcZo
la source