mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-03 22:45:13 +08:00
95 lines
2.1 KiB
Go
95 lines
2.1 KiB
Go
package util
|
|
|
|
import "time"
|
|
|
|
type Timer struct {
|
|
lasttime int64
|
|
timeinterval int64
|
|
|
|
setupZeroDBase time.Duration //0表示普通模式 1表示切换分钟模式
|
|
}
|
|
|
|
func (slf *Timer) GetTimerinterval() int64 {
|
|
return slf.timeinterval
|
|
}
|
|
|
|
func (slf *Timer) SetupTimer(ms int32) {
|
|
slf.lasttime = time.Now().UnixNano()
|
|
slf.timeinterval = int64(ms) * 1e6
|
|
}
|
|
|
|
func (slf *Timer) SetupTimerEx(tm time.Duration) {
|
|
slf.lasttime = time.Now().UnixNano()
|
|
slf.timeinterval = int64(tm)
|
|
}
|
|
|
|
|
|
func (slf *Timer) SetupTimerDouble() {
|
|
slf.lasttime = time.Now().UnixNano()
|
|
slf.timeinterval *= 2
|
|
}
|
|
|
|
func (slf *Timer) SetTimerHalf() {
|
|
slf.lasttime = time.Now().UnixNano()
|
|
slf.timeinterval /= 2
|
|
}
|
|
|
|
//检查整点分钟数触发
|
|
func (slf *Timer) SetupZeroTimer(baseD time.Duration, interval int64) {
|
|
timeNow := time.Now()
|
|
nt := timeNow.Truncate(baseD)
|
|
slf.lasttime = nt.UnixNano()
|
|
slf.timeinterval = baseD.Nanoseconds() * interval
|
|
slf.setupZeroDBase = baseD
|
|
}
|
|
|
|
func (slf *Timer) ResetStartTime() {
|
|
slf.lasttime = 0
|
|
}
|
|
|
|
func (slf *Timer) CheckTimeOut() bool {
|
|
now := time.Now()
|
|
if slf.setupZeroDBase.Nanoseconds() == 0 {
|
|
if now.UnixNano() > slf.lasttime+slf.timeinterval {
|
|
slf.lasttime = now.UnixNano()
|
|
return true
|
|
}
|
|
} else { //整点模式
|
|
if now.UnixNano() > slf.lasttime+slf.timeinterval {
|
|
slf.SetupZeroTimer(slf.setupZeroDBase, slf.timeinterval/slf.setupZeroDBase.Nanoseconds())
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func GetTomorrowTimestamp() int64{
|
|
timeStr := time.Now().Format("2006-01-02")
|
|
t, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr+" 23:59:59", time.Local)
|
|
return t.Unix()+1
|
|
}
|
|
|
|
func IsSameDay(timeFir, timeSec int64) bool{
|
|
firTime:=time.Unix(timeFir,0)
|
|
secTime:=time.Unix(timeSec,0)
|
|
if firTime.Day()==secTime.Day()&&firTime.Month()==secTime.Month()&&firTime.Year()==secTime.Year(){
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func IsCrossOneDay(timeFir,timeSec int64)bool{
|
|
firTime := time.Unix(timeFir,0)
|
|
secTime := time.Unix(timeSec,0)
|
|
firTime.Add(time.Hour*24).Day()
|
|
|
|
if firTime.Day() == secTime.Day() &&
|
|
firTime.Month()==secTime.Month()&&
|
|
firTime.Year()==secTime.Year(){
|
|
return true
|
|
}
|
|
return false
|
|
}
|