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 關注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消