Python LDAP中的时间戳转换为Linux下时间


(Get-ADUser zhangsan -Properties badpasswordtime).badpasswordtime返回值为:131172610187388712
131172610187388712为长整型时间戳(18位),精确到了纳秒级别。该时间戳是从1601-01-01 8:00:00开始计算
1472791840.74是Linux下的时间戳(默认都是13位),精确到了秒级别。该时间是从1970-01-01 8:00:00开始计算

在Python下,无法直接通过datetime.datetime.fromtimestamp('131172610187388712')将131172610187388712转换为可读时间,转换方法如下:

t='131172599865898976'
t_n = long(t)*100/1000000000 #将其从纳秒转换为秒
#从1601-01-01 8:00:00到1970-01-01 8:00:00共经过了11644473600秒,所以需要先将其减掉,然后再进行转换
print datetime.datetime.fromtimestamp(t_n-11644473600) #返回:2016-09-02 11:19:46

print datetime.datetime.fromtimestamp(t_n) #返回2385-09-02 11:19:46

Windows下直接查看时间戳:w32tm /ntte 131172599865898976,返回值:151820 03:19:46.5898976 - 2016/9/2 11:19:46

 时间戳计算:

11644473600秒*1000000000 = 11644473600000000000纳秒
转换为活动目录时间戳
11644473600000000000纳秒/100纳秒=116444736000000000

原文地址:https://www.cnblogs.com/dreamer-fish/p/5833115.html