Python: сравните strptime с strftime - PullRequest
0 голосов
/ 12 апреля 2019

Добрый день, мне нужно написать скрипт, который сравнивает определенное время суток с конкретными файлами "Дата изменения" в Python.

Я только начинаю изучать его и столкнулся с этимпрепятствие.

У меня есть это

domt = datetime.strptime(time.ctime(os.path.getmtime("dom.xlsx")),"%a %b %d %H:%M:%S %Y")

и это

now = datetime.now()
targetime = now.replace(hour=16, minute=0, second=0, microsecond=0)
targetstr = targetime.strftime("%Y-0%#m-%#d %H:%M:%S")

что я пытаюсь достичь:

if targetstr < domt:

.....

Что дает мнеTypeError, которую я не могу сравнить str и установить.

Я понимаю, что я делаю неправильно, пытаясь сравнить несопоставимые переменные, в которых у меня целевое время в виде строки, а Modified Time - в качестве «Set».

Но из-за моих ограничений в знаниях, и я предполагаю отсутствие фундаментальных правил Pythons, я не могу решить это самостоятельно.

Я просматривал другие темы с проблемами Strftime и Strptime,но, похоже, не нашел ответа, который относится к моей проблеме

Ответы [ 2 ]

3 голосов
/ 12 апреля 2019

Если вы пытаетесь сравнить время, может быть проще просто использовать время эпохи, а не анализировать строки.

domt = os.path.getmtime("dom.xlsx") # epoch time of modification

now = datetime.now() # now as datetime
targetime = now.replace(hour=16, minute=0, second=0, microsecond=0)
target_epoch = now.timestamp() # epoch of modified datetime object

if domt < target_epoch: # float comparison of epoch timestamps.
    ...

Если вы хотите работать с датами и временем, вам нужно сохранить оба раза как datetime объекты, а затем сравнить их.

domt = datetime.fromtimestamp(os.path.getmtime("dom.xlsx"))

now = datetime.now() # now as datetime
targetime = now.replace(hour=16, minute=0, second=0, microsecond=0)

if domt < targettime: # datetime comparison
    ...
1 голос
/ 12 апреля 2019

Попробуйте проще:

from datetime import datetime, time

targettime = datetime.combine(datetime.now().date(), time(16))
timestamp = os.path.getmtime("dom.xlsx")
if targettime < datetime.fromtimestamp(timestamp):
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...