[英]Converting string to datetime then comparing it with 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進行比較。
您可以使用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的“ 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()
感謝您的幫助! 我想要的是僅比較小時數,因此我做了一些改動。 我要做的就是得到
diff =現在-dt
然后得到時間,這就是我堅持的時間。 解決的辦法是獲得diff的秒數並除以3600。
我的解決方案:該函數需要一個字符串time和hour參數來確定要刪除的消息。 (編寫網絡自動化腳本)
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個小時,我就可以刪除它們
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.