簡體   English   中英

將字符串轉換為datetime,然后將其與datetime.now進行比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM