replace
メソッドをカスタマイズできるように、datetimeオブジェクトのセッターメソッドを作成したいと考えています。これは可能ですか?例えばdatetimeの有効性をチェックしますか?
:34
は、任意の月の日数の有効な数値ではないですが、私がやりたいことは28
を差し引き、その後1
で月増加とあるので、これはエラーをスローし
datetime = datetime.replace(day = 34)
、30
、または31
日。
replace
メソッドをカスタマイズできるように、datetimeオブジェクトのセッターメソッドを作成したいと考えています。これは可能ですか?例えばdatetimeの有効性をチェックしますか?
:34
は、任意の月の日数の有効な数値ではないですが、私がやりたいことは28
を差し引き、その後1
で月増加とあるので、これはエラーをスローし
datetime = datetime.replace(day = 34)
、30
、または31
日。
あなたはdatetime
をサブクラス化し、replace
方法の独自の実装を提供することができます。
これはあなたの質問に直接答えませんが、datetimeオブジェクトをインクリメントしようとしているのであれば、timedeltaを使用することができます。たとえば:
from datetime import datetime
from datetime import timedelta
datetime(2011, 1, 1) + timedelta(days=34)
すばらしい解決法 - 日数を増やすのではなく、日数を正確に設定することを除いて、 – Andrew
私はあなたの必要性を理解しているか分からないのですか?月+ 1〜31日?? – gecco
彼は 'day = 34'を' day = replacementDayと同等にします。 while(day> daysPerMonth(月)){day = dayPerMonth(月); month + = 1;言い換えれば、現在の月よりも未来に単純な距離で無効な日番号を扱うことです。 –