Python:比较strptime和strftime

时间:2019-04-12 12:26:42

标签: python datetime

早上好,我需要编写一个脚本,用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和set。

我了解我在做错什么,这是在尝试比较无可比拟的变量,其中目标时间为字符串,修改时间为“集合”。

但是由于我的知识局限性,而且我猜想没有Python的基本规则,所以我不能自己解决这个问题。

我浏览了其他有关Strftime和Strptime问题的线程,但似乎找不到与我的问题相关的答案

2 个答案:

答案 0 :(得分:3)

如果您要比较时间,使用纪元时间而不是解析字符串可能会更容易。

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 :(得分:1)

尝试更简单:

from datetime import datetime, time

targettime = datetime.combine(datetime.now().date(), time(16))
timestamp = os.path.getmtime("dom.xlsx")
if targettime < datetime.fromtimestamp(timestamp):
    ...