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