나는 time.Time
에서 얻은 가치를 가지고 있으며 time.Now()
정확히 1 개월 전의 다른 시간을 얻고 싶습니다.
나는 감산이 가능합니다 알고 time.Sub()
(다른하고자하는 time.Time
),하지만이 발생합니다 time.Duration
나는 그것을 주변에 다른 방법이 필요합니다.
나는 time.Time
에서 얻은 가치를 가지고 있으며 time.Now()
정확히 1 개월 전의 다른 시간을 얻고 싶습니다.
나는 감산이 가능합니다 알고 time.Sub()
(다른하고자하는 time.Time
),하지만이 발생합니다 time.Duration
나는 그것을 주변에 다른 방법이 필요합니다.
답변:
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)
}
생성 :
now: 2009-11-10 23:00:00 +0000 UTC
then: 2009-10-10 23:00:00 +0000 UTC
플레이 그라운드 : http://play.golang.org/p/QChq02kisT
Sub
시간을 뺍니다. 야!
Thomas Browne의 의견에 대한 응답으로 lnmx의 답변 은 날짜를 뺄 때만 작동하기 때문에 time.Time 유형에서 시간을 빼는 코드를 수정했습니다.
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)
}
생성 :
now: 2009-11-10 23:00:00 +0000 UTC
10 minutes ago: 2009-11-10 22:50:00 +0000 UTC
말할 것도없이 필요 에 따라 time.Hour
또는 time.Second
대신 사용할 수도 있습니다 time.Minute
.
플레이 그라운드 : https://play.golang.org/p/DzzH4SA3izp
ParseDuration
정적 값을 사용하지 마십시오 ! 그냥 사용하십시오 -10 * time.Minute
. 그 상수가 정의 된 것입니다. 예를 들어 time.Now().Add(-10 * time.Minute)
필요한 모든 것입니다.
now.Add(-10 * time.Minute)
됩니다 now.Add(time.Duration(-10) * time.Minute)
.
다음을 부정 할 수 있습니다 time.Duration
.
then := now.Add(- dur)
에 time.Duration
대해 비교할 수도 있습니다 0
.
if dur > 0 {
dur = - dur
}
then := now.Add(dur)
http://play.golang.org/p/ml7svlL4eW 에서 작동 예제를 볼 수 있습니다 .
-1 * dur
가 있습니다. 작동하지만 d := -1 ; dur = d * dur
오류가 발생합니다. "불일치 유형 int 및 time.Duration"
거기에 time.ParseDuration
행복, 부정적인 기간을 수락 할 매뉴얼에 따라 . 그렇지 않으면 처음에 정확한 기간을 얻을 수있는 기간을 부정 할 필요가 없습니다.
예를 들어 1 시간 반을 빼야 할 때 다음과 같이 할 수 있습니다.
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println("now:", now)
duration, _ := time.ParseDuration("-1.5h")
then := now.Add(duration)
fmt.Println("then:", then)
}