dreamevil0002 2019-07-16 22:34
浏览 149
已采纳

在golang中结合时间和日期?

Suppose I have

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

This returns a time.Time which prints out as:

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

But I know what the actual date is and have it stored as a variable called timestamp which is a time.Time struct already. How do I combine them?

e.g. suppose the date is 2019-06-17. I need the output to be:

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 

This should be trivial right? well it is in C which is what I'm most used to. But I haven't found the answer easily for golang. The docs don't tell me the actual underlying field names, just functions. :-/

  • 写回答

2条回答 默认 最新

  • dtz33344 2019-07-17 01:56
    关注

    If you already have the Date in string format, combine the entire date-time into a single string and call time.Parse once:

    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)
    }
    

    Output:

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

    https://play.golang.org/p/kbor6NBMFLl


    If the date is not in a string format - but you have it in a time.Time, simply coerce to the desired string format, like so:

    mydate.Format("2006-01-02") // e.g. mydate:= time.Now() 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘