date之如何在Go中以自定义日期格式获取以小时为单位的时差
dflying
阅读:79
2025-06-02 22:19:02
评论:0
我需要比较这种格式日期帮助的帮助,我想按小时打印比较延迟
createdAt := msg.Header.Get("Date") // string: Sun, 03 May 2020 16:37:40 +0000 (UTC)
t, err := time.Parse("i don't have this", createdAt)
if err != nil {
fmt.Println(err)
}
// some code here idk - comparison createdAt with date/time now
fmt.Printf("Lifespan is %+v", diff)
输出:
Lifespan is 3h
请您参考如下方法:
net/http 软件包具有一个帮助程序功能,用于从 header 解析时间,并尝试所有与HTTP兼容的格式: http.ParseTime() 。因此,您绝对应该尝试一下。
t, err := http.ParseTime(createdAt)
if err != nil {
// Handle error
}
if t.Before(time.Now()) {
fmt.Println("It's in the past")
} else {
fmt.Println("It's in the future")
}
但是有一个问题:您的时间似乎不是采用有效的HTTP/1.1时间格式,而是由以下布局描述:
"Mon, 02 Jan 2006 15:04:05 -0700 (MST)"
因此,您可以将其解析为:
t, err := time.Parse("Mon, 02 Jan 2006 15:04:05 -0700 (MST)", createdAt)
if err != nil {
panic(err) // Handle error
}
delta := time.Since(t)
fmt.Println("Time since createdAt:", delta)
if delta < 0 {
fmt.Println("It's in the past")
} else {
fmt.Println("It's in the future")
}
它输出(在 Go Playground上尝试):
Time since createdAt: -91841h37m40s
It's in the past
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



