如何在AutoHotkey v2中实现获取当前Unix时间戳的功能?
在AutoHotkey v2中获取Unix时间戳的方法
不用手动累加年、月、日等时间单位计算,借助Windows系统的时间转换机制就能高效实现,以下是可靠的实现方式:
实现函数
GetUnixTimestamp() { ; 获取当前UTC时间对应的文件时间(Windows文件时间以1601年1月1日为起点,单位100纳秒) currentFileTime := FileTimeFromSystemTime(A_NowUTC) ; 1970年1月1日00:00:00 UTC对应的Windows文件时间固定值 unixEpochFileTime := 116444736000000000 ; 计算从Unix纪元到现在的100纳秒间隔数,再转换为秒(1秒=10^7个100纳秒单位) return Floor((currentFileTime - unixEpochFileTime) / 10000000) }
原理说明
- Windows系统的文件时间以1601年1月1日为时间起点,单位是100纳秒;而Unix时间戳以1970年1月1日00:00:00 UTC为起点,单位是秒。
- 两者的时间差是固定值
116444736000000000(即从1601到1970年的总100纳秒间隔数),用当前UTC时间的文件时间减去这个固定值,再除以10^7(转换为秒),取整后就是标准的Unix时间戳。 - 这种方法避免了手动计算闰年、月份天数、时区偏移等容易出错的环节,准确性和效率都更高。
内容的提问来源于stack exchange,提问作者Brawldude2
相关产品推荐
相关产品推荐

