类似于 golang 中的 python timedelta

我想获得一个日期时间,从日期开始计算周数,从一周开始计算天数,从 00:00 时间开始计算秒数。


使用 Python 我可以使用这个:


BASE_TIME = datetime.datetime(1980,1,6,0,0)

tdelta = datetime.timedelta(weeks = 1722,

                            days = 1,

                            seconds = 66355)

mydate = BASE_DATE + tdelta

我正在尝试使用 Go 来实现它,但我在实现它时遇到了一些问题:


package main


import (

    "fmt"

    "time"

)


var base = time.Date(1980, 1, 6, 0, 0, 0, 0, time.UTC)


func main() {

    weeks := 1722

    days := 1

    seconds := 66355

    weeksToSecs := 7 * 24 * 60 * 60

    daysToSecs := 24 * 60 * 60

    totalSecs := (weeks * weeksToSecs) + (days * daysToSecs) + seconds

    nanosecs := int64(totalSecs) * 1000000000


    //delta := time.Date(0, 0, 0, 0, 0, totalSecs, 0, time.UTC)


    date := base.Add(nanosecs)


    fmt.Printf("Result: %s", date)


}

prog.go:21:不能在函数参数中使用纳秒(int64 类型)作为 time.Duration 类型


http://play.golang.org/p/XWSK_QaXrQ


我缺少什么?


开满天机
浏览 214回答 3
3回答

慕桂英3389331

jnml 的答案有效,而且更符合习惯。但是为了说明为什么您的原始代码不起作用,您所要做的就是更改一行。date := base.Add(time.Duration(nanosecs))会将纳秒转换为 time.Duration,这是 Add 期望的类型,而不是 int64。Go 不会自动为你转换类型,所以它抱怨类型是 int64。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go