Python 将字符串转换为datetime,然后将其与datetime.now进行比较

Python 将字符串转换为datetime,然后将其与datetime.now进行比较,python,datetime,Python,Datetime,我想要一根绳子 "9:09am Jan 23" 并将其与datetime.now()进行比较,以获得仅以小时为单位的差异量 如果我做了类似的事情 now = datetime.datetime.now() if now - (string in hours) > 24: return True else: return False 我已经处理它一段时间了,似乎无法成功地将字符串(或转换的字符串对象)与datetime进行比较。现在。您可以结合使用

我想要一根绳子

"9:09am Jan 23"
并将其与datetime.now()进行比较,以获得仅以小时为单位的差异量

如果我做了类似的事情

now = datetime.datetime.now()
if now - (string in hours) > 24:
        return True
    else:
        return False

我已经处理它一段时间了,似乎无法成功地将字符串(或转换的字符串对象)与datetime进行比较。现在。

您可以结合使用
strptime
将字符串转换为datetime。不过,您需要添加当前年份:

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

下面是一个函数,它将获取当前时间的两个实例,并以秒为单位返回差值。这主要是通过datetime的“strTime”完成的,在其中我将当前时间转换为字符串。如果要舍弃当前时间,请用字符串替换“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()

谢谢你们的帮助!我想要的只是如何比较时间,所以我做了一些修改。我需要做的是得到

diff=now-dt

然后是为了得到时间,这就是我一直坚持的。解决方案是得到diff的秒数并除以3600

我的解决方案:一个函数,它使用字符串time和hour参数来确定要删除哪些消息。(编写web自动化脚本)


它只给我时间,现在我可以删除超过x小时的帖子

你可以,然后。我尝试过这个,但似乎无法比较它们。我会尽快回复你的问题,让你知道你到底试了什么。这很有效!只是要弄清楚如何得到几个小时,而不是几天。差秒/3600工作。
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