【问题标题】:Need to test if a time is between two other times on same day需要测试一个时间是否在同一天的另外两个时间之间
【发布时间】:2020-01-23 18:16:55
【问题描述】:

在 Go 中,我如何查找一个时间是否在另外两个时间之间,忽略日期。

日期无关紧要,因为时间是从不允许指定日期的文字中获得的。

保证开始时间早于结束时间 例如

09:00 到 13:00 之间的时间是 10:00 吗? - 是的,如此真实 02:00 和 03:00 之间的时间是 14:12 吗? - 没有那么假

【问题讨论】:

  • 在时间格式为 HH:mm 的情况下,按字典顺序比较它们是完全可以的。这是使用 ISO 8601 格式化的日期的一个很好的属性。en.wikipedia.org/wiki/ISO_8601
  • Grzegorz Żur 的评论真的很有帮助 - 大大简化了代码

标签: go time between


【解决方案1】:

如果您不想比较日期,则在解析时间时只需忽略日期即可。

https://play.golang.org/p/dklyN7NuC5a

start, _ := time.Parse("15:04", "14:00")
end, _ := time.Parse("15:04", "15:00")

t, err := time.Parse("15:04", "14:12")
if err != nil {
    log.Fatal(err)
}

fmt.Println(start.Before(t) && end.After(t))

如果您不需要任何其他时间函数,并且您的时钟时间始终采用HH:mm 格式,那么您可以按字典顺序比较它们:

start := "14:00"
end := "15:00"

t := "14:12"

fmt.Println(start < t && t < end)

【讨论】:

  • 我不认为文档明确说明可以通过这种方式忽略日期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多