Eu tenho um time.Time
valor obtido de time.Now()
e desejo obter outro horário que é exatamente 1 mês atrás.
Eu sei que subtrair é possível com time.Sub()
(que quer outro time.Time
), mas isso resultará em um time.Duration
e eu preciso disso ao contrário.
Sub
para subtrair o tempo. Duh!Em resposta ao comentário de Thomas Browne, porque a resposta de lnmx só funciona para subtrair uma data, aqui está uma modificação de seu código que funciona para subtrair o tempo de um tempo. Tipo de tempo.
Produz:
Já para não falar, você também pode usar
time.Hour
ou emtime.Second
vez detime.Minute
conforme suas necessidades.Playground: https://play.golang.org/p/DzzH4SA3izp
fonte
ParseDuration
use valores estáticos! Basta usar-10 * time.Minute
, é para isso que essas constantes são definidas. Por exemplo,time.Now().Add(-10 * time.Minute)
é tudo o que você precisa.now.Add(-10 * time.Minute)
paranow.Add(time.Duration(-10) * time.Minute)
no caso de seu recebendo um erro quando multiplicando a duração por um valor int ...Você pode negar um
time.Duration
:Você pode até comparar um
time.Duration
com0
:Você pode ver um exemplo prático em http://play.golang.org/p/ml7svlL4eW
fonte
-1 * dur
funcionará, masd := -1 ; dur = d * dur
gerará um erro: "tipos incompatíveis int eHá
time.ParseDuration
que aceitará alegremente durações negativas, conforme o manual . Colocado de outra forma, não há necessidade de negar uma duração onde você pode obter uma duração exata em primeiro lugar.Por exemplo, quando você precisa subtrair uma hora e meia, você pode fazer assim:
https://play.golang.org/p/63p-T9uFcZo
fonte