2009-09-01

http://anond.hatelabo.jp/20090901110205

Python 2.5.2 (r252:60911, Sep 30 2008, 15:41:38)

[GCC 4.3.2 20080917 (Red Hat 4.3.2-4)] on linux2

import datetime
days = lambda year: (datetime.date(year+1, 1, 1) - datetime.date(year, 1, 1)).days
print days(2009) # Output: 365
print days(2000) # Output: 366
print days(400) # Output: 366
print days(100) # Output: 365

古いバージョンはないので確認できないが、少なくとも2.5.2では大丈夫なようだ。

記事への反応 -
  • ファンタジックな処理だと思うけど、コード自動生成ツールで作ったんかなあ。 pythonだとこんな感じになると思ふ もっとエレガントにかけるやもしれんが import calendarDAYS_sec = 60*60*24YEAR_s...

    • 標準モジュールの使用ありなら、なんでdatetime使わないんだ? #!/usr/bin/python# coding: utf-8import datetimedt1 = datetime.datetime(2009, 9, 1, 2, 34, 56) # 2009年9

      • datatimeって2.0系列で閏年の扱いが曖昧だからじゃね。 leapdays()のバグ(こっちは2.0だと直ってる)と同じく、timedeltaのdaysって400で割り切れる年を平年と見なす(本来は閏年)バグが入って...

        • Python 2.5.2 (r252:60911, Sep 30 2008, 15:41:38) [GCC 4.3.2 20080917 (Red Hat 4.3.2-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information.import datetimedays = lambda year: (datetim...

    • 閏年は考慮されてるようにみえないけど?

      • 閏年が考慮されてるように見えないのなら、ちゃんとソース読むところからはじめないと駄目だと思うが。 なぜcalendarをインポートしてるかって言うと、以下の一文入れるから。 ans = yea...

    • 西暦0年とかX月0日とか存在しないよ。 yearとdayは掛け算の前に-1すべきだと思う。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん