首页 > 解决方案 > 在golang中结合时间和日期?

问题描述

假设我有

t := time.Parse("15:04:05.000", "12:16:54.016")

这将返回一个 time.Time,它打印为:

0000-01-01 12:16:54.016 +0000 UTC

但我知道实际日期是什么,并将其存储为一个名为timestamptime.Time 结构的变量。我如何将它们结合起来?

例如,假设日期是 2019-06-17。我需要输出为:

2019-06-17 12:16:54.016 +0000 UTC

// this doesn't compile
ts.AddDate(timestamp.Year(), timestamp.Month(), timestamp.Day())


cannot use timestamp.Month() (type time.Month) as type int in argument to ts.AddDate 

这应该是微不足道的吧?好吧,这是我最习惯的 C 语言。但是我还没有轻易找到 golang 的答案。文档没有告诉我实际的底层字段名称,只是函数。:-/

标签: go

解决方案


package main

import (
    "fmt"
    "log"
    "time"
)

func main() {
    d, err := time.Parse("2006-01-02", "2019-06-17")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(d)

    t, err := time.Parse("15:04:05.000", "12:16:54.016")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(t)

    f := d.Add(time.Hour*time.Duration(t.Hour()) + time.Minute*time.Duration(t.Minute()) + time.Second*time.Duration(t.Second()) + time.Nanosecond*time.Duration(t.Nanosecond()))
    fmt.Println(f)
}

推荐阅读