我有一个API端点,它将收集一些结构化数据,其中一个字段是时间戳,格式如下:"2022-08-30 09:05:27.567995"
我的要求是计算自这个时间戳样式以来的天数。
我有这个代码,这是工作,但我正在寻找改进goplayground:
package main
import (
"fmt"
"math"
"time"
)
func main() {
s1 := "2023-01-20"
date1, _ := time.Parse("2006-01-02", s1)
t1 := time.Now().Round(0)
days := int(math.Ceil(t1.Sub(date1).Hours() / 24))
fmt.Println("days: ", days)
}
我有两个问题:
1.我无法在time.Time中找到任何可以识别该时间格式的内容,所以我做了字符串解析,以获得日期(解析第一个空格),并将其作为变量插入到s1
中。这很好(这里没有列出代码),但我更希望time.Time能够从该格式("2022-08-30 09:05:27.567995"
)中只解析日期。
1.有没有更好的方法来计算自时间戳以来的天数,也许不需要导入数学包?我对这看起来有多困难感到有些惊讶,因为我认为time。since()将能够做到这一点,但我没有成功,所以我想出了这段代码。
3条答案
按热度按时间icnyk63a1#
我用
time.Since()
尝试了下面的代码,结果如我所料:当你使用Matteo发布的格式字符串时,你的时间字符串应该被正确解析。https://pkg.go.dev/time#pkg-constants有关格式字符串的详细信息,请参阅www.example.com。
i7uaboj42#
JSON没有date\datetime数据类型,您可以从string进行解析。
您不需要数学软件包:
编辑:扩展到JSON的情况下,你需要截断很多数据。你可以这样做:
6rvt4ljy3#
对于问题的第一点,可以使用
2006-01-02 15:04:05.999999
模式进行解析,如下所示:参见https://go.dev/play/p/v4TSXJyNOxg