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存储时间!