IdGenerator
IdGenerator copied to clipboard
怎么通过生成的long型id解析得到生成时的时间
希望增加一个parseId的方法,能解析出生成这个id时的参数
提议可接受,近期安排,先从哪门语言开始?
ID 的组成 = 时间序列+WorkerId+SeqNumber。 转成二进制后,右移 (WorkerIdBitLength+SeqBitLength)位数,就可得到时间戳(毫秒单位),将BaseTime加上此时间戳就是ID的生成时间(如:2021-08-10 12:34:56 789).
明白了,静待更新
PHP目录下的split.php
文件有反解的逻辑,可以参考
以下是C#写的获取时间写法
//通过雪花算法ID获取时间戳
static DateTime GetTime() {
var Id = YitIdHelper.NextId();
var Id2Str = Convert.ToString(Id, 2);
var TimeStr = Id2Str.Substring(0, Id2Str.Length- Opt.WorkerIdBitLength-Opt.SeqBitLength);
var dt = Opt.BaseTime.AddMilliseconds(Convert.ToInt64(TimeStr, 2)).ToLocalTime();
return dt;
}
大家玩的这么高级了
这个方法我怎反解析不出来
大家没有问题的话,这个问题就 关闭了。