如何解决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,我知道时间戳,但是我需要从其他媒体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正在使用的时代。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。