2017-08-08 9 views
1

さて、私はPythonの初心者です(これは私の最初のプログラムです)。私は任意の日付にカウントダウンタイマーを作ろうとしています。私はいくつかの(単純な)部分があり、次の質問には次のような質問があります:リストに与えられた時間を格納し、それを解析して年、日などを別々の変数に格納する必要がありますか? Pythonで日付を1つ減算して、残っている時間を私に与えることはできますか?Pythonは2つのdatetime文字列の違いを得る

可変のストア電流。 = target_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

/databases] /(https://docs.python.org/3/library/datetime.html#timedelta-objects)の[datetime](https://docs.python.org/3/library/datetime.html)モジュールのドキュメントを参照してください。 –

答えて

0

TIME_LEFTで

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

ストア目標時間 - CURRENT_TIME

あなたは非常に近いです。あなたにとっては、target_time(str)をdatetimeに変換する必要があるというのは残念です。次に、減算からタイムデルタの結果が得られます。これは非常に便利です。このfunctionで日付を解析:

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

すべてを行う必要がプリントアウトあなたが待っている時間となりました時間との差です。これは、すべてを秒に変換し、次にキャリーオーバーなしで秒を得るために減算することによって簡単に減算することで簡単に行うことができます。次に、秒を秒、秒、分、秒に変換するには、最初にループを使用して秒を60で除算し(mod)、残りを秒で分け、60分を残りを分とするだけですもう一度、24で割って残りを時間などにしてください。

また、間隔を設定することをお勧めします。それ以外の場合、プログラムは移動する前と同じ速さで印刷します間隔を設定することもできます。それ以外の場合は、ループはそれ自身をチェックし続け、印刷には必要以上に「この長い左」があります。

もちろん、簡単な方法があります。これは、理解しないで行に貼り付けるのではなく、手作業で理解するのに役立つ手順を詳細に説明することです。

こちらがお役に立てば幸いです。

+0

'datetime'モジュールはすべてを自分で変換せずに行うことができます。 –

+0

ありがとうございます。私はちょうどこれのすべてを、うまくいけばそれの理解を改善するように言った。 – Elodin

1

まず、datetimeオブジェクトを両方の時刻に取得し、両方のオブジェクトを減算してtimedeltaオブジェクトのオブジェクトを取得します。 timedeltaオブジェクトのtotal_seconds(..)関数を呼び出すと、秒単位の時間差が得られます。 /:例えば:ヒント、ルックアップ【のstrptime(https://docs.python.org/3/library/datetime.html#datetime.datetime.strptime)および[はtimedelta(HTTPSなど

>>> 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  
関連する問題