月の移動と経過日数を別々に指定するのはなぜですか?
両者は異なる要件に応えます。暦の日付に基づくリマインダーは、一定の期間に従うとは限りません。アプリケーションが約束する規則を伝え、日数の少ない月でも実装案が規則を維持するか確認してください。
from calendar import monthrange
from datetime import date
def add_months(day, delta):
if type(day) is not date or type(delta) is not int:
raise ValueError("month.input")
year, month0 = divmod(day.year * 12 + day.month - 1 + delta, 12)
if not 1 <= year <= 9999:
raise ValueError("month.year")
last = monthrange(year, month0 + 1)[1]
return date(year, month0 + 1, min(day.day, last))from calendar import monthrange
from datetime import date
def add_months(day, delta):
if type(day) is not date or type(delta) is not int:
raise ValueError("month.input")
year, month0 = divmod(day.year * 12 + day.month - 1 + delta, 12)
if not 1 <= year <= 9999:
raise ValueError("month.year")
last = monthrange(year, month0 + 1)[1]
return date(year, month0 + 1, min(day.day, last))日付の変更では、ユーティリティ関数の中に製品としての判断が隠れていることがあります。MonthAnchorは実装を見ながらその判断を検討するWindows用AIコーディング環境です。プロジェクトを開き、接続したモデルに編集を求める前に、期待する暦上の結果を説明します。日付ヘルパーだけでなく、現行動作に依存する呼び出し元も含めてください。
具体例は、翌月に同じ日が存在しない場合の、繰り返しリマインダーの日付の月送りです。現在の規則をアシスタントに調べさせ、月末に収めるか別の方針に従うかを決めてから変更案を求めます。このリマインダーは開発上の想定例であり、提供されるスケジュールサービスではありません。
操作を繰り返す場合も提案をレビューします。一度月末に収めると、さらに一月加えた際の結果に影響するため、元の基準日を別の場所に保持する必要があるか定めます。月末、うるう年、対応する年の範囲についてプロジェクトのテストを実行します。編集を採用する前に、ヘルパーの直接の戻り値と利用者に表示される日付の両方を確認してください。
MonthAnchorは対応するOpenAI互換またはAnthropicのエンドポイントに接続します。設定したサービスで提供される場合、拒否抑制を除去したAIモデルが支援できます。コンテキストの上限とツール対応はその構成に依存します。モデルは暦のコードを提案できますが、動作が正しいかを決めるのは利用者の要件です。
両者は異なる要件に応えます。暦の日付に基づくリマインダーは、一定の期間に従うとは限りません。アプリケーションが約束する規則を伝え、日数の少ない月でも実装案が規則を維持するか確認してください。
元の基準日を記憶しているか、前回の結果を次の入力に使うかによります。意図する連続結果を明示してください。一回の結果が正しければ繰り返し動作も正しいと考えず、複数回の移動をテストします。
対象要件に時刻やタイムゾーン変換が含まれる場合だけです。日付のみのヘルパーは、意図的に仕様を絞っている可能性があります。別種の暦の問題へ修正範囲を広げる前に、どの呼び出し元が追加動作を必要とするか尋ねてください。
移動先の日数が少ない月、うるう年への移行、負方向の移動、対応する年の限界を含めます。アプリケーションの方針に基づいて期待結果を書き、アシスタントの例だけに頼らずプロジェクトで実行してください。
MonthAnchor · 更新日 2026-10-25