推特 ID 转日期工具
Sorsa 推文 ID 转日期工具直接从 ID 或链接读取 X 推文的发布时刻:UTC 和你所在时区的日期时间、ISO 8601 和 Unix 时间。可以粘贴单个 ID 或一整份列表,也可以把日期转回 ID。免费,在浏览器中运行。Sorsa 推文 ID 转日期工具可通过链接或 ID 显示任意 X 推文的发布时间。免费,在浏览器中运行。
日期和时间会显示在这里
粘贴推文链接或 ID,或一份列表,每行一个。
如何查看推文的发布时间
X 在推文下方显示日期,精确到分钟,并使用你所在的时区。ID 包含更多信息:确切的时刻,任意时区,任意数量的推文,已删除的推文也可以。
x.com/username/status/1234567890123456789
2020 年 3 月 2 日(周一)19:54:56.824 UTC
X 显示什么
- 推文下方的日期和时间,精确到分钟
- 只有你所在的时区
- 一次一条,且推文仍然存在
ID 能提供什么
- 确切的时刻,精确到毫秒
- UTC、你的时间、ISO 8601 和 Unix 时间
- 整份列表,以及已删除的推文
三个步骤
复制链接或 ID
ID 是推文链接中 /status/ 后面的一长串数字。整个链接也可以。
粘贴一个或一份列表
每行一个,可来自表格、数据集或笔记。粘贴时每行都会转换。
读取时间
UTC 和你的时区、ISO 8601 和 Unix 时间,都可以复制。列表会变成表格和 CSV。
Twitter Snowflake ID 如何存储日期
自 2010 年 11 月 4 日起,X 用名为 Snowflake 的系统生成每个推文 ID:这是一个 64 位数字,时间排在最前面。
- 1 位未使用始终为 0
- 41 位时间自 X 纪元起的毫秒数
- 10 位机器生成它的服务器
- 12 位序列同一毫秒内的 ID
计算方法
time = (ID >> 22) + 1288834974657
ID = (time − 1288834974657) << 22
示例,逐步计算
- ID
- 1234567890123456789
- 右移 22 位
- 294,343,922,167
- 加上纪元 1,288,834,974,657
- 1,583,178,896,824
- 转为日期
- 2020 年 3 月 2 日(周一)19:54:56.824 UTC
X 的纪元 1288834974657 是 2010 年 11 月 4 日 01:42:54.657 UTC。由于时间位于最高位,ID 越大,推文越新,这 41 位可以用到 2080 年 7 月。近几年生成的账号 ID 使用相同格式;要查任意账号的创建日期,推特账号注册时间查询会直接从 X 读取。更多关于 X 数字的内容,请看 Twitter ID 的工作原理。
用 Python、JavaScript 和 SQL 把推文 ID 转为日期
同样的计算写成代码,可用于脚本、笔记本或数据库。每段代码都会输出上面的示例。
请把 ID 读取为文本或 64 位整数:JavaScript 的 number 会对这么长的 ID 四舍五入。
from datetime import datetime, timezone
def tweet_time(tweet_id):
ms = (int(tweet_id) >> 22) + 1288834974657
return datetime.fromtimestamp(ms / 1000, tz=timezone.utc)
print(tweet_time("1234567890123456789"))
# 2020-03-02 19:54:56.824000+00:00const tweetTime = (id) => new Date(Number(BigInt(id) >> 22n) + 1288834974657);
console.log(tweetTime("1234567890123456789").toISOString());
// 2020-03-02T19:54:56.824Z-- PostgreSQL
SELECT to_timestamp(((1234567890123456789 >> 22) + 1288834974657) / 1000.0);
-- BigQuery
SELECT TIMESTAMP_MILLIS((1234567890123456789 >> 22) + 1288834974657);把日期转为推文 ID,用于搜索
这个计算也可以反过来:把某一时刻的毫秒数放回最高位,就能得到 X 在该时刻可能生成的最小 ID。它不是一条推文,只是标记了那个时刻。
批量转换一整份推文 ID 列表
从电子表格或数据集中粘贴一列 ID 或链接。表格按日期排序,标记不是推文 ID 的行,并可下载为 CSV。
- 研究人员 在研究之前,先确定一批推文链接的日期
- 记者 把推文按时间排序,精确到秒
- 开发者 用 ID 核对数据集或日志中的日期
CSV 的列
input post_id created_at_utc unix_ms unix_seconds local_time time_zone post_url
| 推文 ID | 日期(UTC) | 时间(UTC) |
|---|---|---|
| 1923456789012345678 | May 16, 2025 | 19:13:29 |
| 1801234567890123456 | Jun 13, 2024 | 12:46:00 |
| 1704598341293015040 | Sep 20, 2023 | 20:48:09 |
| 1612894531578404864 | Jan 10, 2023 | 19:29:57 |
| 1580661436132757504 | Oct 13, 2022 | 20:47:08 |
通过 API 获取 ID 对应的推文
转换工具给你时间,Sorsa API 给你推文:文本、点赞、转发、回复、查看数、媒体和作者的用户资料,/tweet-info-bulk 每次请求支持 100 个 ID 或链接。它也能读取 2010 年 11 月之前的推文及其日期。
- 100每次请求的推文数
- 低至 $0.014每 1,000 条推文
- 20每秒请求数,所有套餐
无需绑卡,永不过期。
一次调用就是一次请求,无论返回多少内容,失败的请求从不计费:Sorsa API 价格。想不写代码把账号或搜索的推文保存为文件,请用导出推文。
请求
POST https://api.sorsa.io/v3/tweet-info-bulk
ApiKey: YOUR_API_KEY
{"tweet_links": [
"https://x.com/i/status/1234567890123456789",
"https://x.com/i/status/1580661436132757504",
"https://x.com/i/status/1612894531578404864"
]}关于推文 ID 和日期的常见问题
转换工具
如何查看一条推文是什么时候发布的?
把它的链接或 ID 粘贴到上方。转换工具会读取 ID 中存储的时刻,并以 UTC、你的时区和 Unix 时间显示,精确到毫秒。
它会打开推文吗?
不会。它在你的浏览器中根据 ID 算出日期,不向 X 发送请求,所以对已删除的推文和离线状态都有效。想阅读推文本身,请在推特查看器中打开。
可以查询已删除推文的日期吗?
可以,只要你有它的 ID 或链接。时间是 ID 的一部分,与推文是否还存在无关。
日期有多准确?
精确到毫秒:这是 X 生成推文时写入 ID 的时刻。X 自己只显示到分钟。
可以同时转换多个推文 ID 吗?
可以。每行粘贴一个:表格会按日期排序,并可下载为 CSV。
Snowflake ID
什么是 Twitter Snowflake ID?
自 2010 年 11 月 4 日起 X 用于推文的 64 位 ID 格式。前 41 位保存以毫秒为单位的时间,然后是机器编号和序列。这就是 ID 随时间增长、并能转换为日期的原因。详见 Twitter ID 的工作原理。
Twitter 的纪元是什么?
1288834974657:2010 年 11 月 4 日 01:42:54.657 UTC。Snowflake 从这里开始计时,不是 1970 年,所以转换工具要把它加回去。
为什么对 2010 年 11 月之前的推文无效?
更早的推文使用顺序 ID,其中不含时间。如果推文还存在,Sorsa API 仍能读取它及其日期。
可以把用户 ID 转为日期吗?
近几年生成的账号 ID 使用相同格式,所以转换工具可以算出日期;更早、更短的 ID 不含时间。要查任意账号的创建日期,请用推特账号注册时间查询。
由日期生成的 ID 是真实的推文吗?
不是。由日期生成的 ID 是 X 在该时刻可能生成的最小 ID:只是搜索中 since_id 和 max_id 的标记。
API
如何获取完整的推文,而不只是日期?
Sorsa API 的 /tweet-info-bulk 每次请求按 ID 或链接读取 100 条推文,包含文本、数据、媒体和作者,每 1,000 条推文 $0.014 起。首先有 100 次免费请求,无需绑卡。
读取 ID 对应的推文
每次请求 100 条推文的文本、数据、媒体和作者,每 1,000 条 $0.014 起。
无需绑卡,永不过期。自 2022 年起累计处理请求超 60 亿次。
如何查看推文的发布时间
X 显示的日期精确到分钟。ID 里保存着确切的时刻,对任何帖子都是如此,包括已删除的。
x.com/username/status/1234567890123456789
2020 年 3 月 2 日(周一)19:54:56.824 UTC
Twitter Snowflake ID 如何存储日期
自 2010 年 11 月 4 日起,每个推文 ID 都是一个 Snowflake:时间在前的 64 位数字。
- 1 位未使用始终为 0
- 41 位时间自 X 纪元起的毫秒数
- 10 位机器生成它的服务器
- 12 位序列号同一毫秒内的 ID
计算方法
time = (ID >> 22) + 1288834974657
ID = (time − 1288834974657) << 22
用 Python、JavaScript 和 SQL 把推文 ID 转为日期
同样的计算写成代码。每段代码都会输出上面的示例。
请把 ID 读取为文本或 64 位整数:JavaScript 的 number 会对这么长的 ID 四舍五入。
把日期转为推文 ID,用于搜索
把一个时刻放回高位比特,你得到的是 X 当时能生成的最小 ID:它是一个标记,不是一条帖子。
since_id:此时刻之后的推文max_id:此时刻之前的推文
其中两个 ID 能把 X 搜索精确到秒级的时间窗口。
批量转换一整份推文 ID 列表
粘贴一列 ID 或链接:得到按日期排序的表格和一份 CSV。
- 2025 年 5 月 16 日 19:13:291923456789012345678
- 2024 年 6 月 13 日 12:46:001801234567890123456
- 2023 年 9 月 20 日 20:48:091704598341293015040
- 2023 年 1 月 10 日 19:29:571612894531578404864
- 2022 年 10 月 13 日 20:47:081580661436132757504
通过 API 获取 ID 对应的推文
Sorsa API 直接读取帖子本身,每次请求 100 个 ID,附文本、数据、媒体和作者。
- 100每次请求的推文数
- 起 $0.014每 1,000 条帖子
- 20每秒请求数,所有套餐
无需绑卡,永不过期。
关于推文 ID 和日期的常见问题
转换工具
如何查看一条推文是什么时候发布的?
把它的链接或 ID 粘贴到上方。转换工具会读取 ID 中存储的时刻,并以 UTC、你的时区和 Unix 时间显示,精确到毫秒。
它会打开推文吗?
不需要。它在你的浏览器里根据 ID 算出日期,不向 X 发送请求,所以已删除的帖子和离线状态都能用。想读帖子本身,请在推特查看器中打开。
可以查询已删除推文的日期吗?
可以,只要你有它的 ID 或链接。时间是 ID 的一部分,与推文是否还存在无关。
日期有多准确?
精确到毫秒:这是 X 生成推文时写入 ID 的时刻。X 自己只显示到分钟。
可以同时转换多个推文 ID 吗?
可以。每行粘贴一个:表格会按日期排序,并可下载为 CSV。
Snowflake ID
什么是 Twitter Snowflake ID?
自 2010 年 11 月 4 日起 X 用于帖子的 64 位 ID 格式。它的前 41 位存放毫秒时间,后面是机器编号和序列号。所以 ID 会随时间增长,也能转换为日期。更多见Twitter ID 的工作原理。
Twitter 的纪元是什么?
1288834974657:2010 年 11 月 4 日 01:42:54.657 UTC。Snowflake 从这里开始计时,不是 1970 年,所以转换工具要把它加回去。
为什么对 2010 年 11 月之前的推文无效?
更早的推文使用顺序 ID,其中不含时间。如果推文还存在,Sorsa API 仍能读取它及其日期。
可以把用户 ID 转为日期吗?
近几年创建的账号 ID 采用同样格式,所以转换器能推算出日期;较早、较短的 ID 不含时间。想查任意账号的创建日期,请用推特账号注册时间查询。
由日期生成的 ID 是真实的推文吗?
不是。由日期生成的 ID 是 X 在该时刻可能生成的最小 ID:只是搜索中 since_id 和 max_id 的标记。
API
如何获取完整的推文,而不只是日期?
Sorsa API 的 /tweet-info-bulk 每次请求按 ID 或链接读取 100 条推文,包含文本、数据、媒体和作者,每 1,000 条推文 $0.014 起。首先有 100 次免费请求,无需绑卡。
读取 ID 对应的推文
每次请求 100 条推文的文本、数据、媒体和作者,每 1,000 条 $0.014 起。
领取 100 次免费请求无需绑卡,永不过期。自 2022 年起累计处理请求超 60 亿次。
X 显示什么,以及 ID 多提供了什么
X 显示什么
- 推文下方的日期和时间,精确到分钟
- 只有你所在的时区
- 一次一条,且推文仍然存在
ID 能提供什么
- 确切的时刻,精确到毫秒
- UTC、你的时间、ISO 8601 和 Unix 时间
- 整份列表,以及已删除的推文
三个步骤
复制链接或 ID
ID 是推文链接中 /status/ 后面的一长串数字。整个链接也可以。
粘贴一个或一份列表
每行一个,可来自表格、数据集或笔记。粘贴时每行都会转换。
读取时间
UTC 和你的时区、ISO 8601 和 Unix 时间,都可以复制。列表会变成表格和 CSV。
示例,逐步计算
示例,逐步计算
- ID
- 1234567890123456789
- 右移 22 位
- 294,343,922,167
- 加上纪元 1,288,834,974,657
- 1,583,178,896,824
- 转为日期
- 2020 年 3 月 2 日(周一)19:54:56.824 UTC
X 的纪元是 2010 年 11 月 4 日 01:42:54.657 UTC。ID 越大,帖子越新。
Python
from datetime import datetime, timezone
def tweet_time(tweet_id):
ms = (int(tweet_id) >> 22) + 1288834974657
return datetime.fromtimestamp(ms / 1000, tz=timezone.utc)
print(tweet_time("1234567890123456789"))
# 2020-03-02 19:54:56.824000+00:00JavaScript
const tweetTime = (id) => new Date(Number(BigInt(id) >> 22n) + 1288834974657);
console.log(tweetTime("1234567890123456789").toISOString());
// 2020-03-02T19:54:56.824ZSQL
-- PostgreSQL
SELECT to_timestamp(((1234567890123456789 >> 22) + 1288834974657) / 1000.0);
-- BigQuery
SELECT TIMESTAMP_MILLIS((1234567890123456789 >> 22) + 1288834974657);谁、日期、列表,以及 CSV
- 研究人员在研究之前,先为一批帖子链接标定日期
- 记者把帖子按先后排好做成时间线,精确到秒
- 开发者用 ID 核对数据集或日志里的日期
CSV 的列
input post_id created_at_utc unix_ms unix_seconds local_time time_zone post_url
请求
请求
POST https://api.sorsa.io/v3/tweet-info-bulk
ApiKey: YOUR_API_KEY
{"tweet_links": [
"https://x.com/i/status/1234567890123456789",
"https://x.com/i/status/1580661436132757504",
"https://x.com/i/status/1612894531578404864"
]}一次调用就是一次请求,失败的请求从不收费:Sorsa API 价格。