从 winreg.QueryInfoKey 获取时间分量
Getting the time component from winreg.QueryInfoKey
可以使用以下函数找出 Windows 注册表项的最后修改时间:
import datetime
import time
import winreg
def query_info_key(key):
return datetime.datetime(1601, 1, 1) + datetime.timedelta(
0,
-(time.altzone if time.localtime().tm_isdst else time.timezone),
winreg.QueryInfoKey(key)[2] / 10
)
有没有一种方法可以避免引用 time
模块?
是的,你只需要使用 datetime
模块就可以避免像这样额外导入:
import datetime
import winreg
def query_info_key(key):
return datetime.datetime(1601, 1, 1) + \
datetime.timedelta(microseconds=winreg.QueryInfoKey(key)[2] / 10) + \
datetime.datetime.now(datetime.timezone.utc).astimezone().utcoffset()
或者,如果允许 time
导入,您仍然可以改进原始代码:
import datetime
import time
import winreg
def query_info_key(key):
return datetime.datetime(1601, 1, 1) + datetime.timedelta(
0,
time.localtime().tm_gmtoff,
winreg.QueryInfoKey(key)[2] / 10
)
可以使用以下函数找出 Windows 注册表项的最后修改时间:
import datetime
import time
import winreg
def query_info_key(key):
return datetime.datetime(1601, 1, 1) + datetime.timedelta(
0,
-(time.altzone if time.localtime().tm_isdst else time.timezone),
winreg.QueryInfoKey(key)[2] / 10
)
有没有一种方法可以避免引用 time
模块?
是的,你只需要使用 datetime
模块就可以避免像这样额外导入:
import datetime
import winreg
def query_info_key(key):
return datetime.datetime(1601, 1, 1) + \
datetime.timedelta(microseconds=winreg.QueryInfoKey(key)[2] / 10) + \
datetime.datetime.now(datetime.timezone.utc).astimezone().utcoffset()
或者,如果允许 time
导入,您仍然可以改进原始代码:
import datetime
import time
import winreg
def query_info_key(key):
return datetime.datetime(1601, 1, 1) + datetime.timedelta(
0,
time.localtime().tm_gmtoff,
winreg.QueryInfoKey(key)[2] / 10
)