datetime.date(2009, 2, 10)
■[Python] 年齢の計算
「今年−誕生年」を計算し、今年の誕生日がまだ来ていなければ1減らす、という方法です。
from datetime import date, timedelta
birthday = date(1972, 2, 29)
today = date.today()
## y年における誕生日(閏日補正含む)
def yearbirthday(b,y):
try:
return b.replace(year=y)
except ValueError:
b += timedelta(days=1)
return b.replace(year=y)
## 年齢を表示
age = today.year - birthday.year
if today < yearbirthday(birthday, today.year):
age -= 1
print age
replaceメソッドを使って今年の誕生日を求めていますが、この場合2月29日誕生日の人が閏年以外でエラーになってしまわないよう調整が必要です。
おまけ。
birthday = date(1964, 9, 25)
today = date(2009, 2, 10)
## 宗教上の年齢を表示
religional_age = 17
religional_epoch = yearbirthday(birthday, birthday.year+religional_age)
if today < religional_epoch:
print age
else:
print '%dY + %dD' % (religional_age, (today-religional_epoch).days)
17Y + 10000D
…おいおい。
はてなキーワード - 17歳教とは
トラックバック - http://d.hatena.ne.jp/cheeseshop/20090210/1235591147
リンク元
- 2 http://d.hatena.ne.jp/diarylist?of=100&mode=rss&type=public
- 2 http://d.hatena.ne.jp/diarylist?of=150&mode=rss&type=public
- 2 http://search.yahoo.co.jp/search?p=python+?????ゃ?????&search_x=1&tid=top_ga1&ei=UTF-8&pstart=1&fr=top_ga1&b=11&qrw=0
- 2 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=FYw&q=SetConsoleCtrlHandler+python&btnG=検索&lr=lang_ja
- 2 http://www.google.it/search?hl=it&q=BCDFG-HJKMP-QRTVW-XY234-6789B&btnG=Cerca+con+Google&meta=&aq=f&oq=
- 1 http://209.85.175.132/search?q=cache:zzws5JeiJSoJ:d.hatena.ne.jp/cheeseshop/20080416/1208386691+pyhton+StringIO+utf binary&cd=5&hl=ja&ct=clnk&gl=jp&lr=lang_ja&client=firefox-a
- 1 http://d.hatena.ne.jp/cheeseshop
- 1 http://search.yahoo.co.jp/search?p=HTMLCalendar+python&ei=UTF-8&fr=top_ga1_sa&x=wrt
- 1 http://search.yahoo.co.jp/search?tid=top_table&ei=UTF-8&p=python+http+クライアント&search_x=36&search_y=10&pstart=1&fr=top_table&b=11&qrw=0
- 1 http://translate.google.co.in/translate?prev=hp&hl=en&js=n&u=http://d.hatena.ne.jp/cheeseshop/20081217/1237077843&sl=zh-CN&tl=en
