2016-04-19 25 views
2

私は 'プランナー'または日記を作成しようとしています。私はコードを作成しようとしていますので、あなたが寝る前に、またはあなたが計画した活動をする前に、あなたがどれほどの時間を残しているかアドバイスします。他のスレッドを見てから設定時間から現在の時間を差し引く方法

late = timedelta(hours=23) 
current_time = now.hour,now.minute 
time_left = (late - current_time).minutes 
print 'So if the time is %s:%s, That means you have %s minutes left' % (now.hour,now.minute,time_left) 

は、これが私のアプローチでしたが、私は再び他のスレッドでこれを見た

late = datetime(datetime.day,datetime.month,datetime.year,23,00) 

のようないくつかの他の方法を試してみました。私は多くの方法を試しましたが、私は自分自身をそれを解決する方法と混同し始めました。事前に任意の助け再び

おかげ

EDIT: 私はValuerror

と現在のコードで '日が範囲の月の出は' だ

late = datetime(datetime.day,datetime,month,datetime.year,23,00) 

使用

late = timedelta(23,00) 

タイプエラー 'サポート対象外のオペランドタイ - : 'datetime.timedelta'と 'tuple'のpe(s)この例では、

午後11時(または23:00)と現在の時刻との時差を分単位で出力するようにしてください。明確

ANSWERED EDITされていないため申し訳ありません: )(コメント、答えに、私はdatetime型を使用して、複雑でないように、コードを作っていた問題をありがとう正しく、

y = today.year 
    m = today.month 
    d = today.day 

    late = datetime(y,m,d,23,0,0) 

私は年の月でしたそして日は間違ったやり方で、時間のフォーマットが間違っていました。

助けを借りてくれてありがとう。

+1

出力が間違っていますか?あなたが持っているものと望むものを説明してください。 – Nilesh

+1

問題を同じように更新できますか?また、完全なトレースバックを与える。 – Nilesh

+0

申し訳ありませんが、完全なトレースバックですか? – Kingbuttmunch

答えて

4

次は、__sub__メソッドはdatetime型のために実装されているが、明らかに両方のオペランドがdatetime型である必要は演算子を使用する

from datetime import datetime 


today = datetime.today() 
y = today.year 
m = today.month 
d = today.day 

late = datetime(y,m,d,23,0,0) 

now = datetime.now() 

timeDiff = late - now 
print 'So if the time is %s:%s, That means you have %s minutes left' % (now.hour,now.minute,timeDiff.seconds/60) 

達成するためにやりたい方法を示します。

>>> datetime.now().__class__ 
<type 'datetime.datetime'> 

他のdatetimeオブジェクトから1つのdatetimeオブジェクトを減算すると、timedelta型のオブジェクトが得られます。

>>> (datetime(2016,04,19)-datetime(2016,04,18)).__class__ 
>>> <type 'datetime.timedelta'> 

日時はtimedeltaが時差を表すタイムスタンプを表します。

datetimeオブジェクトからtimedeltaオブジェクトを減算することはできますが、その逆はできません。これは自明です。

>>> datetime(2016,10,1)-timedelta(1) 
datetime.datetime(2016, 9, 30, 0, 0) 
+0

私はこの答えを見ることにとても感謝しています。実際には、 '.time()'オブジェクトを減算することはありません。オブジェクトは、このようなタスクのためにやるべき論理的なことだと思うので、常に私を不満にしています。非常に多くの不正があります(時間オブジェクトに対して 'strptime'はありませんが、' strftime'を与えます)。扱いにくいです。 Upvote :) – roganjosh

+0

@roganjosh datetimeオブジェクトからtimeオブジェクトを減算する場合は、timeオブジェクトをdatetimeに変換します。あなたは[この簡単なレシピ](http://stackoverflow.com/a/1697907/1309045)を使用してこれを行うことができます – Spade

+0

ありがとう、それは私がそれを行うことができないわけではない、それは私のための論理的なプロセスが''%H:%M:%S '')。time() ''%timeTime''と '' deadline = datetime.datetime.strptime( "23:00:00"、 "%H:%M:%S")です。私は堅牢なシステムのためには日付のコンテキストが必要であることを理解していますが、非プログラマのための日々の分析のために、 'datetime'モジュールは、ミニマルと複雑さを加える能力ではなく、必要に応じて。これは私が遭遇した他のPythonモジュールとは異なります:) – roganjosh