我有一个程序可以运行 Windows“net user”命令来获取用户的到期日期。例如:“net user justinb/domain”
程序抓取到期日期。我正在获取该到期日期并将其设置为变量 datd
在下面的示例中,我们假设给定的到期日期是 1/10/2018。 (注意:Windows不会在月份前加0)
import time
datd = "1/10/2018"
# places a 0 in front of the month if only 1 digit received for month
d = datd.split("/")
if len(d[0])==1:
datd="0"+datd
print("Changed to: " + datd)
myDate = (time.strftime("%m/%d/%Y"))
print ("This is today's date: " + myDate)
if datd <= myDate: # if datd is is earlier than todays date
print (" Password expired. ")
else:
print (" Password not expired. ")
input(" Press Enter to exit.")
现在,如果 datd 等于 2017 年的日期,它会为我提供正确的信息。不过我遇到了 2018 年及以后的问题。它告诉我 1/10/2018 在今天的 10/24/2017 之前。 有没有办法正确更改日期格式,以便在此程序中正确读取它们?
如果 datd = 1/10/2018,我希望输出显示“密码未过期”
最佳答案
from datetime import datetime
string_input_with_date = "25/10/2017"
past = datetime.strptime(string_input_with_date, "%d/%m/%Y")
present = datetime.now()
past.date() < present.date()
这应该可以为您完成工作!都以带前导 0 和不带它的格式处理日期。
使用 .date()
将日期时间比较到每日日期的范围。
警告:如果您想 100% 正确和纯粹主义者,请注意与时区相关的问题。确保在您的 Windows 域等中假设了哪个时区。
引用:
日期时间 strptime - https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
关于python - 如何检查日期是否早于今天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46915426/