亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲得時間戳之間的差異(字符串或 time.time 之間)

如何獲得時間戳之間的差異(字符串或 time.time 之間)

Go
飲歌長嘯 2023-06-19 15:45:48
我有一個問題:我需要知道 golang 中兩個時間戳之間的差異/持續時間。因此,我使用時間庫 ( https://golang.org/pkg/time/ )。如果我有兩個“time.time”類型的時間戳,使用“time.Sub()”很容易得到差異。我的問題是我的一個時間戳來自另一個函數,并且只能將其作為字符串傳輸:t1 := "2009-11-10 23:00:00 +0000 UTC m=+0.000000001" //類型:字符串t2 := time.Now() //類型:time.time現在我有基本的可能性:A) 也將 t2 轉換為字符串并嘗試找出兩個字符串之間的區別(丑陋)B) 將 t1 從類型“string”轉換為類型“time.time”,然后應用“time.Sub()”我想走B)。因此,我發現time.Parse(格式,時間字符串)應該可以這樣做。所以我嘗試使用轉換 t1t1_time, 錯誤:= time.Parse(time.RFC3339, t1)但結果并不如預期!相反,我得到了這個0001-01-01 00:00:00 +0000 UTC并且錯誤說“錯誤解析時間”2009-11-10 23:00:02 +0000 UTC m=+2.000000001“作為”2006-01-02T15:04:05Z07:00“:無法解析”23:00:02 +0000 UTC m=+2.000000001" 為 "T" "。如果我使用與 t1 相同的自己的時間格式時間格式:=“2009-11-10 23:00:00 +0000 UTC m=+0.000000001”t1_time, err := time.Parse(小時格式, t1)結果仍然錯誤,我收到錯誤消息“錯誤解析時間”2009-11-10 23:00:02 +0000 UTC m=+2.000000001“作為”2009-11-10 23:00:00 +0000 UTC m= +0.000000001”:無法將“9-11-10 23:00:02 +0000 UTC m=+2.000000001”解析為“009-”。我也嘗試過 UNIX 時間,但時間庫不允許我將字符串轉換為 unix。我做錯了什么??!為什么解析不起作用?謝謝你的幫助!
查看完整描述

1 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

基本上你想要:


    t1_raw := "2009-11-10 23:00:00 +0000 UTC m=+0.000000001"

    format := "2006-01-02 15:04:05 -0700 MST"


    // for simplicity t1_raw[:29] discards time's monotonic delta

    // i.e. the " m=+0.000000001" suffix


    t1, err := time.Parse(format, t1_raw[:29])

    if err != nil {

            log.Fatal(err)

    }


    log.Println("Duration ->", t2.Sub(t1))

如果您真的想要包含單調增量,則必須手動解析該數字并將增量應用于t1.

游樂場版本。

注意: playground 版本將顯示持續時間為零 - 因為 playground 的時鐘開始于Nov 11 2009- 的開創性生日go。



查看完整回答
反對 回復 2023-06-19
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號