猿问

Instagram 媒体 ID 到时间戳的转换

Instagram 在这篇博文中解释了他们如何创建媒体 ID

https://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:27Z

2383568809444681765 2020-08-25T13:52:46Z


拉莫斯之舞
浏览 129回答 1
1回答

临摹微笑

package mainimport (    "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 正在使用的时代。
随时随地看视频慕课网APP

相关分类

Go
我要回答