【发布时间】:2020-11-21 00:09:40
【问题描述】:
我有一个 time.Time start "2019-07-02 01:00:00" 我想写一个函数来告诉我 time.Now() 是否在开始时间前 x 分钟的范围内(忽略日期,只是时钟部分01:00:00)
例如:
案例一
x = 30 minutes
time.Now() = "2020-11-20 00:45:00" //return True because 00:45:00 is 15 minutes before 01:00:00
time.Now() = "2020-11-20 00:20:00" //return False because 00:20:00 is 40 minutes before 01:00:00
案例二
x = 120 minutes
time.Now() = "2020-11-20 23:00:00" //return True because 23:00:00 is 120 minutes/2 hours before 01:00:00 (like 11pm is 2 hours before 1am of next day)
time.Now() = "2020-11-20 00:00:00" //return True
time.Now() = "2020-11-20 00:20:00" //return True
time.Now() = "2020-11-20 22:30:00" //returns False
案例三
x=1440 // 24 hours
always return true
我现在只解决了案例一而不是案例二。我查看了 go 的时间包,但没有找到任何有效解决此问题的方法。有什么想法吗?
now := time.Now()
trigger : = start.Sub(time.Minute * x))
triggerClock := trigger.Sub(trigger.Truncate(24 * time.Hour)) //extract clock portion
nowClock := now.Sub(now.Truncate(24*time.Hour)) //extract clock portion
diff := nowClock.Seconds() - triggerClock.Seconds()
if diff >= 0 && diff < x {
return true
}
【问题讨论】: