2016-01-24 48 views
1

我想带一个字符串将字符串转换成datetime然后将其与datetime.now

"9:09am Jan 23" 

,并与datetime.now()比较获得唯一的小时差量进行比较。

所以,如果我不喜欢的东西

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

我已经与它搞乱了一小会儿,并不能似乎比较成功的一个字符串(或转换后的字符串对象)与datetime.now。

+0

您可以[字符串转换为datetime](HTTP,我可以删帖: //stackoverflow.com/q/466345/2144390),然后[比较两个日期时间值](http://stackoverflow.com/q/8142364/2144390)。 –

+0

我已经试过这一点,但不能似乎对它们进行比较。我会尝试真正的快,并报告 – Ecko

+0

请[编辑]你的问题,以显示你真正尝试。 –

回答

2

您可以将字符串中结合使用strptimethe relevant format为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 
+0

这工作!只需要弄清楚如何得到小时,而不是几天。 diff.seconds/3600有效。 – Ecko

0

这里是一个函数,将抓住当前时间的两个实例并以秒为单位返回差异。这与日期时间的“strptime”,我在其中当前时间转换为字符串大多完成。如果你想抛弃当前的时间,更换“时间”或字符串“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() 
0

感谢您的帮助!我想要的只是如何比较几小时,所以我做了一些黑客攻击。我需要做的是让

差异=现在 - DT

然后得到的时间,这是我被困在。解决的办法是得到差异的秒数和除以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 

它给了我只有个小时,现在如果他们超过X小时老