Instagram 在这篇博文中解释了他们如何创建媒体 IDhttps://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c我们的每个 ID 包含: 41 位以毫秒为单位的时间(给我们 41 年的 ID 和自定义纪元) 13 位表示逻辑分片 ID 10 位表示自动递增序列,模数 1024。这意味着我们可以每个分片每毫秒生成 1024 个 ID。我们的“时代”从 2011 年 1 月 1 日开始,不确定这是实际的产值还是仅用于示例如何从媒体 ID 取回时间戳?我有这两个媒体 ID,我知道时间戳,但我需要从其他人那里提取它2384288897814875714 2020-08-26T13:43:27Z2383568809444681765 2020-08-25T13:52:46Z
1 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
package main
import (
"fmt"
"time"
)
const (
instaEpoch int64 = 1314220021721
mediaID int64 = 2384288897814875714
)
func main() {
extractedTimestamp := mediaID >> (64-41)
timeFromMediaID := extractedTimestamp + instaEpoch
fmt.Println(time.Unix(timeFromMediaID/1000,0).UTC())
}
输出:
2020-08-26 13:43:27 +0000 UTC
您可以右移 id 以获取时间戳。然后你必须将毫秒添加到 instagram 正在使用的时代。
- 1 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消