github.com/whatap/golib@v0.0.22/util/dateutil/DateSyncTime.go (about) 1 package dateutil 2 3 import ( 4 // "fmt" 5 "time" 6 ) 7 8 const ( 9 TIME_SYNC_INTERVAL = 5000 10 ) 11 12 var SyncTimeMillis int64 13 var lastSyncTime int64 14 var syncTimeTicker *time.Ticker 15 16 func StartSyncTime() { 17 SyncTimeMillis = systemMillis() 18 lastSyncTime = SyncTimeMillis 19 clock() 20 } 21 22 func StopSyncTime() { 23 syncTimeTicker.Stop() 24 } 25 26 func IsSyncTime() bool { 27 if syncTimeTicker != nil { 28 return true 29 } 30 return false 31 } 32 33 func clock() { 34 syncTimeTicker = time.NewTicker(time.Millisecond) 35 go func() { 36 for t := range syncTimeTicker.C { 37 SyncTimeMillis = t.UnixNano() / 1000000 38 if SyncTimeMillis > lastSyncTime+TIME_SYNC_INTERVAL { 39 now := systemMillis() 40 //fmt.Println(">>>> sync gap =", (now - SyncTimeMillis)) 41 lastSyncTime = now 42 SyncTimeMillis = now 43 } 44 } 45 }() 46 } 47 func systemMillis() int64 { 48 return time.Now().UnixNano() / 1000000 49 }