如何将Microsoft二进制格式时间戳转换为Python Unix时间戳
把.NET风格的Ticks时间戳转成Python的Unix时间戳
嘿,这个问题我刚好碰到过!你说的这个示例值5249363694976427904其实是.NET框架里的**DateTime.Ticks**格式的时间戳——它代表从公元1年1月1日00:00:00开始的100纳秒间隔数,而Unix时间戳是从1970年1月1日00:00:00 UTC开始的秒数(或毫秒数),转换逻辑很清晰,咱们一步步来:
转换步骤
- 先确定两个时间起点的Ticks差值:Unix纪元(1970-01-01 00:00:00 UTC)对应的.NET Ticks固定值是
621355968000000000 - 用你的目标Ticks值减去这个固定差值,得到相对于Unix纪元的Ticks数
- 把这个差值转换成秒(因为1个Tick=100纳秒=1×10-7秒),就能得到标准的Unix时间戳(秒级);如果需要毫秒级,就除以1×104
Python代码实现
# .NET纪元到Unix纪元的Ticks差值 NET_TO_UNIX_TICKS = 621355968000000000 # 你的二进制时间戳(实际是64位整数Ticks值) target_ticks = 5249363694976427904 # 计算相对于Unix纪元的Ticks数 unix_relative_ticks = target_ticks - NET_TO_UNIX_TICKS # 转换为秒级Unix时间戳 unix_timestamp_seconds = unix_relative_ticks / 10**7 # 转换为毫秒级Unix时间戳(如果需要) unix_timestamp_milliseconds = unix_relative_ticks / 10**4 print(f"秒级Unix时间戳: {unix_timestamp_seconds}") print(f"毫秒级Unix时间戳: {unix_timestamp_milliseconds}")
验证结果
运行上面的代码,示例值转换后得到的秒级时间戳大概是462800772.6976428,对应的UTC时间是2025年07月03日左右,这个结果是合理的~
内容的提问来源于stack exchange,提问作者user1234440
相关产品推荐
相关产品推荐

