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

在 golang 中结合时间和日期?

在 golang 中结合时间和日期?

Go
叮当猫咪 2023-07-04 16:45:53
假设我有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的答案。文档没有告诉我实际的底层字段名称,只是函数。:-/
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

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)

}


查看完整回答
反对 回复 2023-07-04
?
GCT1015

TA贡献1827条经验 获得超4个赞

如果您已经有了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() 


查看完整回答
反对 回复 2023-07-04
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

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