登录
首页 >  Golang >  Go问答

计算最接近的 HH:MM(am/pm) 时间差异(Using Go)

来源:stackoverflow

时间:2024-03-20 19:09:37 111浏览 收藏

在 Go 语言中计算时间差时,需要注意日期信息和“am/pm”后缀。如果不提供日期信息,会导致计算错误。例如,从下午到上午的时间差计算结果为 -719 分钟,而正确结果为 1 分钟。为了得到正确的结果,需要在时间模板中提供日期信息和“pm”后缀,如“02 03:04pm”。

问题内容

在计算从下午到上午的时差时遇到了一些问题,反之亦然。例如:

ref, _ := time.Parse("03:04pm", "11:59pm")
t, _ := time.Parse("03:04am", "12:00am")

fmt.Println(t.Sub(ref).Minutes()) // Got -719, my expectation is 1 (minutes)

事实上确实如此,但我想要得到最小的差异。


正确答案


你得到-719的原因是你没有提供日期信息,并且在第二次解析你的模板中有拼写错误。模板必须包含 pm

time.parse("03:04pm", "11:59pm") // 0000-01-01 23:59:00 +0000 utc
time.parse("03:04am", "12:00am") // 0000-01-01 12:00:00 +0000 utc

您需要在模板中提供日期信息和下午

time.Parse("02 03:04pm", "01 11:59pm") // 0000-01-01 23:59:00 +0000 UTC
time.Parse("02 03:04pm", "02 12:00am") // 0000-01-02 00:00:00 +0000 UTC

参见https://stackoverflow.com/a/69338568/12301864

好了,本文到此结束,带大家了解了《计算最接近的 HH:MM(am/pm) 时间差异(Using Go)》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>