任何人都知道这是什么时间戳? 130580051014610352
我相信它自1970年以来就是一种常见的东西,在.NET中很常见。
我需要将它转换为AutoHotkey中的YYYYMMDDHH24MISS时间戳。
感谢任何帮助
答案 0 :(得分:1)
它似乎是Windows file time。引用MSDN:
文件时间是一个64位值,表示自上午12点以来经过的100纳秒间隔的数量。 1601年1月1日协调世界时(UTC)。
但是,请记住,获取此时间戳的文件系统很重要。
NTFS根据UTC时间正确存储文件时间。
FAT16和FAT32根据本地时间存储文件时间。
假设该值来自NTFS且因此基于UTC,您可以使用DateTime.FromFileTimeUtc
在.NET代码中获取UTC时间,或者您可以使用DateTime.FromFileTime
获得等效的本地时间。
我不确定AutoHotkey脚本语言中的等效代码究竟是什么,但我确实注意到它已经有built-in function来从文件中获取时间戳,如果是#39; s你正在做什么。
答案 1 :(得分:0)
有人在 AHK 论坛上发布了一个解决方案:
TicksToTime(FileTicks,UTC="")
{ ; 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC)
; FileTicks := 131817689607677716
FileSeconds := FileTicks // 10000000
DateTimeUTC := 1601
DateTimeUTC += FileSeconds, S
if (UTC = 1)
Return DateTimeUTC
; LocalTicks := FileTimeToLocalFileTime(FileTicks) ;;;
VarSetCapacity(FileTime, 8, 0)
VarSetCapacity(LocalTime, 8, 0)
NumPut(FileTicks, FileTime, "UInt64")
DllCall("FileTimeToLocalFileTime", "Ptr", &FileTime, "Ptr", &LocalTime)
FileSeconds := (NumGet(LocalTime, "UInt64") // 10000000)
DateTimeLoc := 1601
DateTimeLoc += FileSeconds, S
;utc time = DateTimeUTC
Return DateTimeLoc
}