40

私は、個人がどれくらい生きているかを伝える簡単なプログラムに取り組んでいます。

現在の日付を取得する方法と、誕生日を取得する方法を知っています。唯一の問題は、2 つの日付を減算する方法がないことです。2 つの日付を減算する方法は知っていますが、残念ながら、時間、分、または秒は含まれません。

2 つの日付を減算し、その差を日だけでなく秒単位で返す方法を探しています。

4

6 に答える 6

43
from datetime import datetime

birthday = datetime(1988, 2, 19, 12, 0, 0)
diff = datetime.now() - birthday
print diff
# 8954 days, 7:03:45.765329
于 2012-08-25T23:04:17.527 に答える
12

UTC時間を使用します。そうしないと、秒単位の経過時間がDST移行中に逆方向に進む可能性があります。

from datetime import datetime

born = datetime(1981, 12, 2) # provide UTC time
age = datetime.utcnow() - born
print(age.total_seconds())

また、人が生まれた場所とは別の場所(タイムゾーン)にあるコンピューターでプログラムを実行している場合、または誕生日以降にこの場所で時間規則が変更されている場合は、現地時間を使用できません。数時間のエラーが発生する場合があります。

うるう秒を考慮したい場合、タスクはほとんど不可能になります。

于 2012-08-25T23:22:33.903 に答える
8

2 つのdatetimeオブジェクトを減算すると、新しいdatetime.timedeltaオブジェクトが得られます。

from datetime import datetime
x = datetime.now()
y = datetime.now()
delta = y - x

マイクロセンコードまでの解像度で時差が得られます。

詳細については、公式ドキュメントを参照してください。

于 2012-08-25T23:05:56.853 に答える
5

datetime.datetimeあなたの日付から作成します。

datetime.datetime.combine(birthdate, datetime.time())

これで から差し引くことができますdatetime.datetime.now()

>>> from datetime import date, datetime, time
>>> bday = date(1973, 4, 1)
>>> datetime.now() - datetime.combine(bday, time())
datetime.timedelta(14392, 4021, 789383)
>>> print datetime.now() - datetime.combine(bday, time())
14392 days, 1:08:13.593813
于 2012-08-25T23:03:31.057 に答える