簡體   English   中英

Go 語言 time.Parse() 用於沒有時區的時間戳

[英]Go language time.Parse() for timestamps with no timezone

在 Go 中,我嘗試使用time包中的time.Parse()函數將字符串時間戳轉換為Time對象。 我知道 Go 有一種不常見的方式來表示時間戳所采用的時間格式,方法是向它提供一個示例,說明它們的參考時間( Mon Jan 2 15:04:05 -0700 MST 2006 )將如何以您的格式顯示。 但是,我仍然遇到錯誤問題。 這是我的時間戳之一的示例:

Tue Nov 27 09:09:29 UTC 2012

這是我正在撥打的電話的樣子:

    t, err := time.Parse("Mon Jan 02 22:04:05 UTC 2006", "Tue Nov 27 09:09:29 UTC 2012")

所以基本上我在這里所做的是嘗試匹配日期名稱/月份名稱/日期編號、小時/分鍾/秒格式、字符串文字“UTC”和年份格式的格式。 請注意,我已將 Go 參考格式的 hours 字段增加7 (從1522 ),以說明它們的時間戳在負 7 時區並且我所有的時間戳都在 UTC 時區的事實。

我得到的錯誤是:

parsing time "Tue Nov 27 09:09:29 UTC 2012" as "Mon Jan 02 22:04:05 UTC 2006": cannot parse ":09:29 UTC 2012" as "2"

我在這里做錯了什么? 我是否誤解了如何使用time.Parse()或者我的用例由於某種原因不受支持?

你的格式字符串應該是:

Mon Jan 02 15:04:05 MST 2006

游樂場

也就是說,時區使用MST ,小時使用15 ,如鏈接的 Parse 函數中所述。

在這種情況下,您可以使用time.UnixDate

package main

import (
   "fmt"
   "time"
)

func main() {
   t, e := time.Parse(time.UnixDate, "Tue Nov 27 09:09:29 UTC 2012")
   if e != nil {
      panic(e)
   }
   fmt.Println(t)
}

https://golang.org/pkg/time#UnixDate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM