2011-11-26 11 views
0

replaceメソッドをカスタマイズできるように、datetimeオブジェクトのセッターメソッドを作成したいと考えています。これは可能ですか?例えばdatetimeの有効性をチェックしますか?

34は、任意の月の日数の有効な数値ではないですが、私がやりたいことは28を差し引き、その後1で月増加とあるので、これはエラーをスローし

datetime = datetime.replace(day = 34) 

30 、または31日。

+0

私はあなたの必要性を理解しているか分からないのですか?月+ 1〜31日?? – gecco

+0

彼は 'day = 34'を' day = replacementDayと同等にします。 while(day> daysPerMonth(月)){day = dayPerMonth(月); month + = 1;言い換えれば、現在の月よりも未来に単純な距離で無効な日番号を扱うことです。 –

答えて

1

あなたはdatetimeをサブクラス化し、replace方法の独自の実装を提供することができます。

1

これはあなたの質問に直接答えませんが、datetimeオブジェクトをインクリメントしようとしているのであれば、timedeltaを使用することができます。たとえば:

from datetime import datetime 
from datetime import timedelta 

datetime(2011, 1, 1) + timedelta(days=34) 
+0

すばらしい解決法 - 日数を増やすのではなく、日数を正確に設定することを除いて、 – Andrew

関連する問題