Instagram媒体ID到时间戳的转换 [英] Instagram media ID to timestamp conversion
本文介绍了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
推荐答案
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正在使用的纪元。
这篇关于Instagram媒体ID到时间戳的转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文