web-dev-qa-db-ja.com

Pythonで日付を引く

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

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

私は、2つの日付を減算し、差を1日だけでなく2番目に戻すことができる方法を探しています。

18
Boe Jingles
from datetime import datetime

birthday = datetime(1988, 2, 19, 12, 0, 0)
diff = datetime.now() - birthday
print diff
# 8954 days, 7:03:45.765329
22
David Robinson

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

from datetime import datetime

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

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

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

10
jfs

日付から_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
_
4
Martijn Pieters

2つのdatettimeオブジェクトを減算すると、datettime.timedeltaオブジェクト。

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

マイクロセンコッドの解像度と時間差を与えます。

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

4
import datetime
born = datetime.date(2002, 10, 31)
today = datetime.date.today()
age = today - born

print(age.total_seconds())

出力:463363200.0

3
Abbazz_124