Go语言中如何对time时间对象执行大于等于(>=)比较操作?
Go语言实现时间大于等于判断的规范写法
你需要的time.Now() >= expiry逻辑,最简洁且符合标准库设计的写法如下:
if !time.Now().Before(expiry) { // 对应 >= 逻辑的业务代码 }
方法说明
Go标准库的time.Time类型提供了三个基础比较方法,和大小判断的对应关系为:
t1.After(t2)等价于t1 > t2,判断t1时间晚于t2t1.Equal(t2)等价于两个时间为同一时刻(会自动处理时区差异,比直接用==更安全:==会同时比较时区属性,不同时区的同一时刻用==判断会返回false)t1.Before(t2)等价于t1 < t2,判断t1时间早于t2
你需要的>=逻辑本质就是「当前时间不早于expiry时间」,直接用!Before(expiry)即可完全覆盖等于、晚于两种场景,不需要拼接复杂的判断表达式。如果后续需要实现<=逻辑,对应的写法是!time.Now().After(expiry)。
注意事项
不要使用time.Now() == expiry写法判断时间相等,该判断会同时校验时区属性,若两个时间实际为同一时刻但时区不同,会出现错误的false结果,判断时间相等请统一使用Equal()方法。
内容的提问来源于stack exchange,提问作者hermit.crab
相关产品推荐
相关产品推荐

