为了账号安全,请及时绑定邮箱和手机立即绑定

类似于 golang 中的 python timedelta

类似于 golang 中的 python timedelta

Go
开满天机 2021-06-19 15:02:57
我想获得一个日期时间,从日期开始计算周数,从一周开始计算天数,从 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 mainimport (    "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我缺少什么?
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

jnml 的答案有效,而且更符合习惯。但是为了说明为什么您的原始代码不起作用,您所要做的就是更改一行。

date := base.Add(time.Duration(nanosecs))会将纳秒转换为 time.Duration,这是 Add 期望的类型,而不是 int64。Go 不会自动为你转换类型,所以它抱怨类型是 int64。


查看完整回答
反对 回复 2021-06-21
  • 3 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信