簡體   English   中英

時間錯誤。計算的持續時間

[英]Wrong time.Duration calculated

我有一個返回“正常運行時間”值的 HTTP 服務器。 代碼的簡短版本:

package main

import (
    "fmt"
    "net/http"
    "time"
)

var startup time.Time

func main() {
    startup = time.Now()
    http.HandleFunc("/", RootHandler)
    http.ListenAndServe(":39000", nil)
}

func RootHandler(w http.ResponseWriter, r *http.Request) {
    now := time.Now()
    fmt.Fprintf(w, "startup: %s\nnow: %s\nuptime (.Since): %s\nuptime (.Sub): %s",
        startup.Format("2006-01-02 15:04:05"),
        now.Format("2006-01-02 15:04:05"),
        time.Since(startup).Round(time.Second),
        now.Sub(startup).Round(time.Second),
    )
}

我在 22:10:33 啟動服務器,大約 1 小時 10 分后我讓我的電腦進入睡眠狀態。 早上,電腦醒來后,我得到了下一個回復:

startup: 2021-11-18 22:10:33
now: 2021-11-19 05:35:20
uptime (.Since): 1h13m14s
uptime (.Sub): 1h13m14s

我正在研究 windows,但代碼是從 WSL v2 執行的。 有人可以解釋為什么時間計算錯誤嗎?

PS 如果我直接從 windows 運行 - 響應很好(時間差計算正確)。

你的代碼看起來不錯。 據我了解,WSL v2 是它自己的環境。 在這種情況下,它從那里獲得時間。 我會檢查系統上的時間。

https://tomssl.com/fixing-clock-drift-in-wsl2-using-windows-terminal/

暫無
暫無

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

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