为了账号安全,请及时绑定邮箱和手机立即绑定

Instagram 媒体 ID 到时间戳的转换

Instagram 媒体 ID 到时间戳的转换

Go
拉莫斯之舞 2022-06-27 15:23:49
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 正在使用的时代。


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信