从winreg.QueryInfoKey获取时间组件

问题描述 投票:0回答:1

可以使用以下函数找出上次修改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模块?

python-3.x datetime python-import timezone-offset winreg
1个回答
0
投票

是的,你只需要使用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
    )
© www.soinside.com 2019 - 2024. All rights reserved.