Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
如何从civil.Datetime获取时间_Date_Go - Fatal编程技术网

如何从civil.Datetime获取时间

如何从civil.Datetime获取时间,date,go,Date,Go,由于来自Bigquery数据库的查询响应,我必须使用civil.Datetime 我怎样才能从civil.Datetime获得时间。Golang的Datetime 比如: var date time.Time = civil.ToTime(myCivilTime) 我查看了civil time文档:这里有一个函数,似乎满足了我的要求 func (d Date) In(loc *time.Location) time.Time 但是我不确定如何设置*time.Location参数。使用对您的应

由于来自Bigquery数据库的查询响应,我必须使用civil.Datetime

我怎样才能从civil.Datetime获得时间。Golang的Datetime

比如:

var date time.Time = civil.ToTime(myCivilTime)
我查看了civil time文档:这里有一个函数,似乎满足了我的要求

func (d Date) In(loc *time.Location) time.Time

但是我不确定如何设置*time.Location参数。

使用对您的应用程序有意义的
time.Location。比如说,

package main

import (
    "fmt"
    "time"

    "cloud.google.com/go/civil"
)

func main() {
    now := time.Now().Round(0)
    fmt.Println(now, " : time Now")
    d := civil.DateTimeOf(now)
    fmt.Println(d, "           : civil DateTime")
    t := d.In(time.UTC)
    fmt.Println(t, " : time UTC")
    t = d.In(time.Local)
    fmt.Println(t, " : time Local")
    pacific, err := time.LoadLocation("America/Los_Angeles")
    if err != nil {
        fmt.Println(err)
        return
    }
    t = d.In(pacific)
    fmt.Println(t, " : time Pacific")
}
输出:

2018-07-03 12:46:15.728611385 -0400 EDT  : time Now
2018-07-03T12:46:15.728611385            : civil DateTime
2018-07-03 12:46:15.728611385 +0000 UTC  : time UTC
2018-07-03 12:46:15.728611385 -0400 EDT  : time Local
2018-07-03 12:46:15.728611385 -0700 PDT  : time Pacific

除了@peterSO的答案,如果您不想依赖机器的区域时间,您可以将其转换为
string
,然后再转换为
time.time

t, err := time.Parse("2006-01-02", myCivilDateTime.Date.String())

传入您希望在中接收生成的
time.time
的位置(时区),例如,或者如果您希望在本地时区中获得结果,请使用(Pass)
time.local