1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | def date2int(time_str): """ 2008/07/01のような日付フォーマットをエポック時間に変換する。 """ return time.mktime( time.strptime(time_str, "%Y/%m/%d") ) def int2date(time_int): """ エポック時間を2008/07/01のような日付フォーマットに変換する。 """ return time.strftime( "%Y/%m/%d", time.gmtime(time_int) ) idate = "2008/08/01" aday = 24*3600 # 一日分の秒数 end_of_july_int = date2int(idate) - aday end_of_july = int2date(end_of_july_int) print "date: %s" % end_of_july |
1 2 | # 出力結果 date: 2008/07/31 |
月末日を求めるポイントは上記の赤色の行のように、
求めたい月末付きの翌月の日時を 用意(この例では2008/08/01)し、
それから一日分の経過時間(=aday)を引くことところに あります。
これで、閏年だろうが、30 or 31日の月だろうが統一して扱うことが可能となります。