如何将注册表中64位十六进制Windows FileTime转换为指定日期时间格式?
注册表REG_BINARY关机时间转换方法
你拿到的5D-07-BB-CB-60-1F-D7-01是Windows系统的FILETIME格式值,采用小端字节序存储,以下是转换步骤和简便方法:
手动转换步骤
- 反转字节顺序:将原字节串按
-拆分后反转,得到01 D7 1F 60 CB BB 07 5D(这是FILETIME对应的64位十六进制值) - 转十进制数值:将反转后的十六进制转成十进制,结果为
132166000000000000(该数值代表从1601年1月1日00:00:00 UTC开始的100纳秒间隔数) - 转本地日期时间:通过FILETIME转日期时间的规则计算,该数值对应的UTC时间为
2020-10-09 08:26:40,转换为东八区本地时间是2020-10-09 16:26:40,最终格式化为DDMMYYYY HH:MM:SS就是09102020 16:26:40
简便转换方法(用Windows自带PowerShell)
直接运行以下命令,替换字节串为你的REG_BINARY值即可:
# 输入你的REG_BINARY字节串(用逗号分隔) $bytes = [byte[]]("5D,07,BB,CB,60,1F,D7,01" -split ',' | ForEach-Object { [byte]::Parse($_, 'HexNumber') }) # 转换为FILETIME数值 $fileTime = [System.BitConverter]::ToInt64($bytes, 0) # 格式化为指定的日期时间格式 [System.DateTime]::FromFileTime($fileTime).ToString("ddMMyyyy HH:mm:ss")
执行后会直接输出转换后的结果,无需依赖第三方工具或在线网站。
内容的提问来源于stack exchange,提问作者sajar sajar
相关产品推荐
相关产品推荐

