2017-08-08 99 views
1

好吧,所以,我是Python新手(這是我的第一個程序)。我正在嘗試使倒數計時器倒計時到任何給定的日期。我有一些工作的(簡單)部分,我的下一步問題包括:我是否需要將給定的時間存儲在列表中,然後解析並將年份,日期等存儲在單獨的變量中?我可以在Python中減去另一個日期來給我剩下多少時間嗎?Python得到兩個日期時間字符串的差異

在變量中存儲電流時間。

from datetime import datetime 
current_time = (str(datetime.now())) 
print("The current time is " + current_time) 

存儲目標的時間在一個變量

target_day = input("What date are you waiting for (day/month/year format, please)?") 

time_left = target_time - current_time 

OR

while current_time: 
    if current_time == target time: 
     break 
    print("It's time!") 

print(\rtime_left) 
print("You have " + weeks + "weeks, " + days + "days," + hours + "hours, and " + minutes.") 
+0

作爲一個提示,查找[strptime](https://docs.python.org/3/library/datetime.html#datetime.datetime.strptime)和[timedelta](HTTPS:/ /docs.python.org/3/library/datetime.html#timedelta-objects)中的[日期時間](https://docs.python.org/3/library/datetime.html)模塊文檔。 –

回答

0

TIME_LEFT = target_time - CURRENT_TIME

你非常接近。令人沮喪的是,您仍然需要將target_time,str轉換爲datetime。然後你會得到減法的timedelta結果,你會發現它非常有用。分析日期與此function

target_time = datetime.strptime(text_from_user, '%d-%b-%Y') 
0

所有你需要做的是打印出來,你在等待的時間,現在的時間之間的差異。這可以通過簡單的減法很容易地完成,將所有內容都轉換成秒,然後減去得到沒有任何遺漏的秒。接下來只是剛剛使用循環第一分(MOD)由60秒,秒轉換爲年,月,日,分鐘和秒再次獲得其餘爲秒,然後通過60除以分鐘,其餘爲分鐘再次,然後用24分獲得剩餘的時間等等...

另外,我建議設置的時間間隔,你的程序將只保留在移動之前打印同一日期儘可能快地就可以了,而你可以設置一個時間間隔,否則你的循環將會持續檢查自己,並且打印出你有更多時間「超出需要」的時間。

當然也有更簡單的方法,這只是詳細講解做手工所採取的步驟,幫助你理解,而不是僅僅粘貼一行不理解它。

我希望這會有所幫助。

+0

'datetime'模塊可以做到這一點,而無需自行轉換所有內容。 –

+0

謝謝。我只是說了所有這些,希望能夠提高對它的理解。 – Elodin

1

首先獲取兩個時間的datetime對象,並減去兩個對象以獲取timedelta類型的對象。然後調用timedelta對象的total_seconds(..)函數以秒爲單位獲取時間差。例如:

>>> from datetime import datetime 

>>> target_time = '18/03/2022' 

>>> target_datetime = datetime.strptime(target_time, '%M/%d/%Y') 
>>> current_datetime = datetime.now() # No need to convert it to string 

>>> time_left = target_datetime - current_datetime # return `timedelta` object 



# returns total seconds 
>>> time_left.total_seconds() 
139037207.03403