diff --git a/Go/source/idgen/DefaultIdGenerator.go b/Go/source/idgen/DefaultIdGenerator.go index e0d1e00..cb05185 100644 --- a/Go/source/idgen/DefaultIdGenerator.go +++ b/Go/source/idgen/DefaultIdGenerator.go @@ -87,3 +87,7 @@ func NewDefaultIdGenerator(options *IdGeneratorOptions) *DefaultIdGenerator { func (dig DefaultIdGenerator) NewLong() int64 { return dig.SnowWorker.NextId() } + +func (dig DefaultIdGenerator) ExtractTime(id int64) time.Time { + return time.UnixMilli(id>>(dig.Options.WorkerIdBitLength+dig.Options.SeqBitLength) + dig.Options.BaseTime) +} diff --git a/Go/source/idgen/YitIdHelper.go b/Go/source/idgen/YitIdHelper.go index f096210..6226f60 100644 --- a/Go/source/idgen/YitIdHelper.go +++ b/Go/source/idgen/YitIdHelper.go @@ -2,6 +2,7 @@ package idgen import ( "sync" + "time" ) var singletonMutex sync.Mutex @@ -27,3 +28,7 @@ func NextId() int64 { return idGenerator.NewLong() } + +func ExtractTime(id int64) time.Time { + return idGenerator.ExtractTime(id) +}