go

Restando tiempo Duración del tiempo en Go



(3)

Tengo un time.Time Valor de time.Now() obtenido de time.Now() y quiero obtener otro tiempo que sea exactamente hace 1 mes.

Sé que restar es posible con time.Sub() (que quiere otro time.Time . time.Time ), pero eso resultará en un tiempo. time.Duration y lo necesito al revés.


En respuesta al comentario de Thomas Browne, debido a que la respuesta de lnmx solo funciona para restar una fecha, aquí hay una modificación de su código que funciona para restar tiempo de un tiempo. Tipo de tiempo.

package main import ( "fmt" "time" ) func main() { now := time.Now() fmt.Println("now:", now) count := 10 then := now.Add(time.Duration(-count) * time.Minute) // if we had fix number of units to subtract, we can use following line instead fo above 2 lines. It does type convertion automatically. // then := now.Add(-10 * time.Minute) fmt.Println("10 minutes ago:", then) }

Produce:

now: 2009-11-10 23:00:00 +0000 UTC 10 minutes ago: 2009-11-10 22:50:00 +0000 UTC

Sin mencionar que también puede usar el tiempo. time.Hour o tiempo. time.Second lugar de tiempo. time.Minute según sus necesidades.

Área de juegos: https://play.golang.org/p/DzzH4SA3izp


Prueba AddDate :

package main import ( "fmt" "time" ) func main() { now := time.Now() fmt.Println("now:", now) then := now.AddDate(0, -1, 0) fmt.Println("then:", then) }

Produce:

now: 2009-11-10 23:00:00 +0000 UTC then: 2009-10-10 23:00:00 +0000 UTC

Área de juegos: http://play.golang.org/p/QChq02kisT


Puede negar un time.Duration . time.Duration :

then := now.Add(- dur)

Incluso puedes comparar un tiempo. time.Duration contra 0 :

if dur > 0 { dur = - dur } then := now.Add(dur)

Puede ver un ejemplo de trabajo en http://play.golang.org/p/ml7svlL4eW