获取当前日期/时间并与其他日期比较

2024-04-19 05:00:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试获取当前时间,并将其与从字符串中获取的日期进行比较。 这是我的密码:

import datetime

CurrentDate = str(datetime.datetime.now())
CurrentDate = datetime.strptime(CurrentDate, "%d/%m/%Y %H:%M")
print(CurrentDate)

ExpectedDate = "9/8/2015 4:00"
ExpectedDate = datetime.datetime.strptime(ExpectedDate, "%d/%m/%Y %H:%M")
print(ExpectedDate)

if CurrentDate > ExpectedDate:
    print("Date missed")
else:
    print("Date not missed")

但这就是我犯的错误。

CurrentDate = datetime.strptime(CurrentDate, "%d/%m/%Y %H:%M") AttributeError: 'module' object has no attribute 'strptime'


Tags: 字符串import密码datetimedateif时间else
3条回答

datetime.datetime.now()转换成字符串没有多大意义,只是这样你就可以把它转换回日期时间。就这样吧。

import datetime

CurrentDate = datetime.datetime.now()
print(CurrentDate)

ExpectedDate = "9/8/2015 4:00"
ExpectedDate = datetime.datetime.strptime(ExpectedDate, "%d/%m/%Y %H:%M")
print(ExpectedDate)

if CurrentDate > ExpectedDate:
    print("Date missed")
else:
    print("Date not missed")

结果:

2015-09-09 12:25:00.983745
2015-08-09 04:00:00
Date missed

我发现了这个优秀的module使日期操作变得如此简单:

import arrow

n = arrow.utcnow()
expected = arrow.get("9/8/2015 4:00", "D/M/YYYY H:m")

if n > expected:
    print("Date Missed.")
else:
    print("Date not missed.")

在datetime模块中,一个类也被命名为datetime,这一点您可能已经知道了,因为您在代码的其余部分中做得很好。

你的第三行应该是:

CurrentDate = datetime.datetime.strptime(CurrentDate, "%d/%m/%Y %H:%M")

在两个datetime中只有一个。那一行引起了一个错误。 或者,您可以导入整个类:

from datetime import datetime

而且不需要指定datetime两次,这稍微容易一点。

编辑:正如两位炼金术士所指出的(我真的没有注意到),你用一个字符串来比较日期,这不是一个好的做法。看看this question中关于在Python中比较日期而不将日期转换为字符串的各种片段。

相关问题 更多 >