假设我有
t := time.Parse("15:04:05.000", "12:16:54.016")
这将返回一个时间。时间显示为:
0000-01-01 12:16:54.016 +0000 UTC
但是我知道实际的日期是什么,并将其存储为名为timestamp
的变量,这是一个time.Time结构。如何将它们结合在一起?
例如假设日期为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的答案。文档不会告诉我实际的基础字段名称,而只是告诉函数。 :-/
答案 0 :(得分: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)
}
答案 1 :(得分:1)
如果您已经拥有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)
}
:
time.Time
输出:
2019-06-17 12:16:54.016 +0000 UTC
https://play.golang.org/p/kbor6NBMFLl
如果日期不是字符串格式-但日期是mydate.Format("2006-01-02") // e.g. mydate:= time.Now()
,只需将其强制转换为所需的字符串格式,如下所示:
/storage/emulated/0/Download