在 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 世界标准时间

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


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

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


叮当猫咪
浏览 83回答 2
2回答

慕婉清6462132

package mainimport (    "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)}

GCT1015

如果您已经有了Date字符串格式,请将整个日期时间合并为一个字符串并调用time.Parse一次:func datePlusTime(date, timeOfDay string) (time.Time, error) {    return time.Parse("2006-01-02 15:04:05.000", date+" "+timeOfDay)}func main() {    t, err := datePlusTime("2019-06-17", "12:16:54.016")    if err != nil {        panic(err)    }    fmt.Println(t)}输出:2019-06-17 12:16:54.016 +0000 世界标准时间https://play.golang.org/p/kbor6NBMFLl如果日期不是字符串格式 - 但您将其放在 a 中time.Time,只需强制转换为所需的字符串格式,如下所示:mydate.Format("2006-01-02") // e.g. mydate:= time.Now() 
打开App,查看更多内容
随时随地看视频慕课网APP