解析特定时区的时间
您可以使用 time.ParseTime() 从字符串中获取时间结构。它采用布局字符串作为参数,指定输入字符串的格式。布局字符串必须与输入字符串的格式完全匹配。
如果需要解析包含时区的时间字符串,可以使用 time.ParseInLocation()。该函数采用布局字符串和位置作为参数。该位置可以是 time.Location 值或表示时区名称的字符串。
例如,以下代码解析包含时区的时间字符串:
<code class="go">import ( "fmt" "time" ) func main() { const layout = "2006-01-02 15:04" const timeStr = "2012-07-09 05:02:00 +0000 CEST" t, err := time.ParseInLocation(layout, timeStr, time.Local) if err != nil { fmt.Println(err) return } fmt.Println(t) }</code>
This代码将打印以下输出:
2012-07-09 05:02:00 +0000 CEST
time.ParseInLocation() 函数将根据布局字符串和指定位置解析时间字符串。在本例中,布局字符串为“2006-01-02 15:04”,位置为“CEST”。 time.ParseInLocation() 函数将返回一个表示解析时间的 time.Time 值。
如果不指定位置,time.ParseInLocation() 函数将使用当地时区。这意味着解析的时间将转换为本地时区。
您可以通过创建一个具有正确时间和时区的时间来避免这种情况:
<code class="go">import ( "fmt" "time" ) func main() { const layout = "2006-01-02 15:04" const timeStr = "2012-07-09 05:02:00" const timeZone = "CEST" pz, err := time.LoadLocation(timeZone) if err != nil { fmt.Println(err) return } t, err := time.Parse(layout, timeStr) if err != nil { fmt.Println(err) return } T := t.In(pz) fmt.Println(T) }</code>
这个代码将打印以下输出:
2012-07-09 05:02:00 +0200 CEST
此代码的输出显示正确时区的时间。
以上是如何在Go中解析具有特定时区的时间字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!