如何用Python将Discord雪花ID转换为日期?现有代码报错求解决
修复Discord用户ID(雪花ID)转日期的Python代码
你的代码无法正常运行的核心问题是用错了Discord雪花ID的起始纪元值。Discord的雪花ID以2015年1月1日00:00:00 UTC作为时间起点,对应的毫秒级时间戳是1420070400000,而非你代码里的210801244770402304。
以下是修正后的可运行代码:
import datetime def snowflake_to_datetime(snowflake_id): # Discord雪花ID的起始纪元(毫秒) discord_epoch = 1420070400000 # 提取雪花ID中的时间部分并转换为UTC datetime timestamp = ((snowflake_id >> 22) + discord_epoch) / 1000 return datetime.datetime.utcfromtimestamp(timestamp)
代码说明
- Discord雪花ID的前42位存储的是相对于起始纪元的毫秒数,通过右移22位可以提取这部分值
- 将提取的毫秒偏移量加上起始纪元的毫秒时间戳,再除以1000转换为秒级时间戳,最后用
utcfromtimestamp生成标准UTC时间对象
示例使用:
# 替换为实际的Discord用户ID user_id = 123456789012345678 creation_time = snowflake_to_datetime(user_id) print(f"用户创建时间(UTC):{creation_time}")
内容的提问来源于stack exchange,提问作者paulita
相关产品推荐
相关产品推荐

