Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 结合时间和时间;在戈朗约会?_Go - Fatal编程技术网

Go 结合时间和时间;在戈朗约会?

Go 结合时间和时间;在戈朗约会?,go,Go,如果我有 t := time.Parse("15:04:05.000", "12:16:54.016") 这将返回一个时间。时间打印为: 0000-01-01 12:16:54.016 +0000 UTC 但我知道实际日期是什么,并将其存储为名为timestamp的变量,该变量已经是time.time结构。我如何组合它们 e、 g.假设日期为2019-06-17。我需要输出为: 2019-06-17 12:16:54.016+0000 UTC // this doesn't compile

如果我有

t := time.Parse("15:04:05.000", "12:16:54.016")
这将返回一个时间。时间打印为:

0000-01-01 12:16:54.016 +0000 UTC
但我知道实际日期是什么,并将其存储为名为
timestamp
的变量,该变量已经是time.time结构。我如何组合它们

e、 g.假设日期为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来说,我并没有很容易找到答案。文档没有告诉我实际的基础字段名,只告诉了函数。:-/

如果您已经有了字符串格式的
日期
,请将整个日期时间组合成一个字符串,然后调用
时间。解析
一次:

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


如果日期不是字符串格式,但您的日期是
time.time
,只需强制为所需的字符串格式,如下所示:

mydate.Format("2006-01-02") // e.g. mydate:= time.Now() 

“这并不是天生的简单,也不能解决TZ的数学问题——它只是移动了它。”Flimzy同意。在OP中,不清楚TZ信息在哪里:在日期(time.time)中,还是应该通过一天中的时间输入(如果我们没有与UTC打交道?)。因此,对于所有在家观看的孩子们:始终以UTC存储时间!