[英]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.