0

2つの日付を減算し、時間の差を計算しています

c_date = "2011-03-23 12:52:14"
c_obj_date = datetime.datetime.strptime(c_date, "%Y-%m-%d %H:%M:%S")
n_date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print "Creation Date:", c_date
print "Current Date: ", n_date
hours = abs(n_date - c_obj_date).total_seconds() / 3600.0
print hours

ただし、これによりこのエラーが発生します。

  File "./eight.py", line 69, in zabbix_result
    hours = abs(n_date - c_obj_date).total_seconds() / 3600.0
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.datetime'

私はpython2.4を使用しています

アップデート:

私は今使用しました

n_date = datetime.datetime.now()

しかし、total_seconds()はpython2.4では機能しませんか?2つの日時オブジェクトを減算して時間差を取得する方法はありますか?

4

5 に答える 5

2

エラーメッセージを見てください。オペランドの左側の型はstr。です。問題は3行目にあります。パーツを取り外してみてくださいstrftime

于 2012-04-07T17:53:08.287 に答える
1

n_dateは文字列で、c_obj_dateはdatetime.datetimeオブジェクトです。どちらからも.total_seconds()メソッドを取得している場所がわかりません(timedeltaメンバーではありません...)。次のようなものを試してください。

c_date = "2011-03-23 12:52:14"
 c_obj_date = datetime.datetime.strptime(c_date、 "%Y-%m-%d%H:%M:%S")
 n_date = datetime.datetime.now()

 印刷"作成日:"、c_date
 印刷"現在の日付:"、n_date

 absdiff = abs(n_date --c_obj_date)
 時間=(absdiff.days * 24 * 60 * 60 + absdiff.seconds)/ 3600.0

 印刷時間
于 2012-04-07T17:58:37.437 に答える
1

のタイプn_dateは文字列です。のタイプc_obj_dateは日時です。つまり、一方を他方から減算することはできません。これは、エラーメッセージの内容でもあります。

あなたはおそらく次のことをするつもりでした:datetime.datetime.now() - c_obj_date。これでがあり、timedelta以下の方法を使用して秒数を取得できます。

このtotal_seconds()メソッドはPython2.7で導入され、Python 2.4を使用しているため、機能しません。Python 2.4でそれを実行したい場合は、ドキュメントの計算方法に従ってください。

(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6

ここで、tdはに等しいdatetime.datetime.now() - c_obj_dateです。

于 2012-04-07T17:53:35.377 に答える
1

datetimeオブジェクトを操作する必要があります。

この行を変更します。

n_date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

と:

n_obj_date = datetime.datetime.now()

そして、次のものを次のように調整します。

print "Creation Date:", c_date
print "Current Date: ", n_obj_date.strftime("%Y-%m-%d %H:%M:%S")
hours = abs(n_obj_date - c_obj_date).total_seconds() / 3600.0
print hours

このようにして、2つの日時オブジェクト間の減算を実行します。

于 2012-04-07T17:54:33.103 に答える
1

strftimeはタイムリーオブジェクトを文字列に変換し、strptimeは文字列をタイムリーオブジェクトに解析します。

したがって、n_dateは文字列です。

于 2012-04-07T17:55:16.090 に答える