我想要一个字符串
"9:09am Jan 23"
并将其与datetime.now()进行比较,以获得仅以小时为单位的差异量。
所以,如果我做了类似
的事情now = datetime.datetime.now()
if now - (string in hours) > 24:
return True
else:
return False
我已经搞砸了一段时间,似乎无法成功地将字符串(或转换后的字符串对象)与datetime.now进行比较。
答案 0 :(得分:2)
您可以使用strptime
和the relevant format将字符串转换为日期时间。您需要添加当前年份:
import datetime
now = datetime.datetime.now()
year = now.year
datestring = "9:09am Jan 23 " + year
dt = datetime.datetime.strptime(datestring, "%H:%M%p %b %d %Y")
减去两个日期时间会为您提供一个timedelta对象,因此您需要提取日期:
diff = now - dt
days_diff = diff.days
答案 1 :(得分:0)
这是一个函数,它将获取当前时间的两个实例并以秒为单位返回差异。这主要是通过datetime的'strptime'完成的,我将当前时间转换为字符串。如果您想放弃当前时间,请用字符串替换'time'或'xvar'变量。我在这里使用秒,但你可以轻松地返回差异小时数。
import datetime, sys
def time_passed():
while True:
inp = raw_input("Press [Y] to start, or [X] to exit.: ").lower()
if inp == 'y':
now = datetime.datetime.now()
xvar = now.strftime("%b %d %H:%M:%S")
time = datetime.datetime.strptime(xvar, "%b %d %H:%M:%S")
time = time.replace(year = 2016)
print "The first recording of the time is: {0}".format(time)
print "The second recording of the time is: {0}".format(now)
yvar = (now - time)
print "Between the two times, there is a difference of {0} seconds".format(yvar.total_seconds())
continue
elif inp == 'x':
sys.exit()
break
else:
print "Command Error!"
continue
if __name__ == '__main__':
time_passed()
答案 2 :(得分:0)
感谢帮帮!我想要的是如何只比较小时,所以我做了一点点黑客攻击。我需要做的是获取
diff = now - dt
然后得到那个小时,这就是我坚持的。解决方案是获得差异的秒数并除以3600。
我的解决方案:一个函数,它使用字符串时间和小时参数来确定要删除的消息。 (编写Web自动化脚本)
def to_delete(self, date, accepted_range):
""" decides to delete a message based on certain criteria """
now = datetime.datetime.now()
date_str = "%s %s" % (date, now.year)
dt = datetime.datetime.strptime(date_str, "%H:%M%p %b %d %Y")
diff = now - dt
if diff.seconds/3600 > accepted_range:
return True
else:
return False
它只给我一些时间,现在我可以删除帖子,如果它们超过x小时