Получение компонента времени из winreg.QueryInfoKey - PullRequest
0 голосов
/ 26 февраля 2019

Можно узнать, когда ключ реестра 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?

1 Ответ

0 голосов
/ 27 февраля 2019

Да, вам нужно только использовать модуль 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
    )
...