通过JS获取雪花ID中的时间戳

通过JS获取雪花ID中的时间戳,也就是获取该雪花ID的生成时间

什么是雪花ID
snowflake是Twitter开源的分布式ID生成算法,结果是64bit的Long类型的ID,有着全局唯一和有序递增的特点。
在这里插入图片描述

  • 最高位是符号位,因为生成的 ID 总是正数,始终为0,不可用。
  • 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。时间位还有一个很重要的作用是可以根据时间进行排序。
  • 10位的机器标识,10位的长度最多支持部署1024个节点。
  • 12位的计数序列号,序列号即一系列的自增ID,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持每个节点每毫秒产生4096个ID序号。

如果后台是通过Hutool的IdUtil默认配置生成的雪花ID,则可以使用以下的代码获取雪花ID对应的时间戳

const SEQUENCE_BITS = 12n;
const WORKER_ID_BITS = 5n;
const DATA_CENTER_ID_BITS = 5n;
const twepoch = 1288834974657n;
function getGenerateDateTime(id: bigint): bigint {
	return (id >> (SEQUENCE_BITS + WORKER_ID_BITS + DATA_CENTER_ID_BITS) & ~(-1n << 41n)) + twepoch;
}

如果后台是通过Hutool的IdUtil生成的雪花ID,但是有修改部分配置,一般只需要替换以下的这几个值与后台的对应上即可

// 序列号的位数
SEQUENCE_BITS
// 机器节点ID的位数
WORKER_ID_BITS
// 数据中心节点ID的位数
DATA_CENTER_ID_BITS
// 起始时间戳
twepoch
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值