startAt, _ := time.Parse(time.DateTime, "2023-10-14 15:49:53")
endAt, _ := time.Parse(time.DateTime, "2024-10-14 15:49:53")
timeNow := time.Now()
fmt.Println(timeNow) //2023-10-14 21:38:42
fmt.Println(startAt.After(timeNow)) // result is true, but is not true
fmt.Println(timeNow.After(endAt)) // false
if startAt.After(timeNow) || timeNow.After(endAt) {
fmt.Println("ok!")
}
使用time.ParseInLocation就成功了!
您的结果是由于默认时区行为的差异造成的。
time.Parse
将默认使用 UTC。
time.Now
使用当地时区。
如果您想将输入字符串解析为当地时间,请使用
time.ParseInLocation
,并传递 time.Local
作为位置:
startAt, _ := time.ParseInLocation(time.DateTime, "2023-10-14 15:49:53", time.Local)
endAt, _ := time.ParseInLocation(time.DateTime, "2024-10-14 15:49:53", time.Local)
如果您想获取当前的 UTC 时间,您可以使用:
time.Now().UTC()