gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/myx/slowtime/time.go (about)

     1  package slowtime
     2  
     3  import (
     4  	"time"
     5  )
     6  
     7  var timeSpace = int(time.Second)
     8  
     9  var (
    10  	now time.Time
    11  )
    12  
    13  func init() {
    14  	go timeProc()
    15  }
    16  
    17  func Now() time.Time {
    18  	return now
    19  }
    20  
    21  // 按照timeSpace更新时间,可减少运行time.Now()的次数,用于对时间不敏感的场景
    22  func timeProc() {
    23  	now = time.Now()
    24  	offset := now.UnixNano() - now.Unix()*int64(time.Second)
    25  	time.Sleep(time.Duration(offset)) // 整点更新
    26  
    27  	for {
    28  		now = time.Now()
    29  		dif := now.UnixNano() - now.Unix()*int64(time.Second)
    30  		time.Sleep(time.Duration(timeSpace - int(dif)))
    31  	}
    32  }