“Filetime” 通常指的是 Windows 文件时间(Windows File Time),这是一种在 Windows 操作系统中用于表示文件创建、修改和访问时间的标准时间格式。
什么是 Windows File Time?
- 定义:Windows File Time 是一个 64 位整数,表示自 1601 年 1 月 1 日 00:00:00 UTC 以来经过的 100 纳秒 间隔数。
- 用途:Windows API(如
GetFileTime、SetFileTime)使用这种格式来存储文件的时间戳。 - 特点:
- 高精度(100 纳秒精度)。
- 基于 UTC 时间(协调世界时)。
- 与操作系统时区无关,便于跨时区比较。
如何转换 File Time?
✅ 方法一:使用 Python 转换
from datetime import datetime, timezone
def filetime_to_datetime(filetime):
"""
将 Windows File Time 转换为 Python datetime 对象
:param filetime: int, Windows File Time 值
:return: datetime 对象(UTC 时间)
"""
# 1601-01-01 是 Windows 文件时间的起点
epoch = datetime(1601, 1, 1, tzinfo=timezone.utc)
# File Time 以 100 纳秒为单位,所以除以 10,000,000 得到秒
seconds = filetime / 10_000_000
return epoch + timedelta(seconds=seconds)
# 示例:某个文件的 File Time 值
filetime_value = 133456789012345678
dt = filetime_to_datetime(filetime_value)
print(dt) # 输出类似:2026-01-15 10:30:45.123456+00:00
✅ 方法二:使用 PowerShell 转换
$filetime = 133456789012345678 $dateTime = [datetime]::FromFileTime($filetime) Write-Host $dateTime
✅ 方法三:使用 C# 转换
long filetime = 133456789012345678; DateTime dateTime = DateTime.FromFileTime(filetime); Console.WriteLine(dateTime);
常见应用场景
| 场景 | 说明 |
|---|---|
| 文件元数据解析 | 读取或写入文件的创建、修改、访问时间 |
| 注册表分析 | Windows 注册表键值的时间戳也使用 File Time 格式 |
| 日志分析 | 某些 Windows 日志(如 NTFS 日志)使用 File Time |
| 逆向工程/取证 | 分析恶意软件或系统痕迹时,需解析时间戳 |
注意事项
- 时区问题:File Time 本身是 UTC 时间,显示时可根据需要转换为本地时间。
- 负值处理:File Time 不能表示 1601 年之前的时间,因此不会出现负值。
- 精度损失:转换为秒或毫秒时,会丢失 100 纳秒级别的精度。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/487261.html



