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  }