旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

[Python] 月の加減算処理ができない?

2008年12月15日

datetimeやdateオブジェクトに
月を加算/減算する処理が見当たらない。

マニュアルを読んでもわからなかったので、あてずっぽうで書いてみると・・・(2.5.2)

datetime.datetime(2008, 12, 1) + datetime.timedelta(months=1)
# -> monthsという指定方法は無いのでエラー
datetime.datetime(2008, 13, 1) # -> 範囲外でエラー

で☆す☆よ☆ねー!!!

ググったら、こういう記事を発見したので、自分も諦めて終了。

誰が教えてくだちい。

【追記、上だけだとなんなんで】
本当にただのスクリプトだけど、自分でやった対処

def calculate_month_delta(year, month, delta):
"""年月に月を加減算した結果を返す
>>> calculate_month_delta(2008, 1, 1)
(2008, 2)
>>> calculate_month_delta(2008, 1, 12)
(2009, 1)
>>> calculate_month_delta(2008, 6, 25)
(2010, 7)
>>> calculate_month_delta(2008, 1, -1)
(2007, 12)
>>> calculate_month_delta(2008, 1, -37)
(2004, 12)
"""
month += delta
while 1:
if month < 1:
year -= 1
month += 12
continue
elif month > 12:
year += 1
month -= 12
continue
break
return year, month


【追記 – 結論】
kishirさんよりご教授いただいた

>>> import time, datetime
>>> datetime.datetime.fromtimestamp(time.mktime((2008, 13, 1, 0, 0, 0, 0, 0, 0)))
datetime.datetime(2009, 1, 1, 0, 0)
>>> datetime.datetime.fromtimestamp(time.mktime((2008, -1, 1, 0, 0, 0, 0, 0, 0)))
datetime.datetime(2007, 11, 1, 0, 0)

イヤッッホォォォウ!