Instagram媒体ID到时间戳的转换 [英] Instagram media ID to timestamp conversion

查看:18
本文介绍了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

推荐答案

playground

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆