次のように 13 日を減算する datetime オブジェクトを作成しました。
(date.today()-timedelta(days=13)).strftime('%Y-%m-%d')
午前 6 時と午前 8 時 30 分にコードを実行すると、異常が発生します。午前 6 時に、結果の文字列は次のように返されます (今日が 2012-02-29 の場合):
2012-02-15
現在の14日前です!ただし、午前 8 時 30 分に同じ行を実行すると、結果の文字列は次のように返されます。
2012-02-16
それなら正しい。これまでのところ、短い期間の違いが何であるかを理解できませんでした。それが重要な場合は、タイムゾーンの単純な日時オブジェクトを使用します。結果の文字列日付でこの変更が発生する原因を知りたいです。
どうもありがとう。
編集:(以下のeumiroの提案に基づく)
datetime.datetime.now() は以下を返します:
>>> datetime.datetime(2012, 2, 29, 10, 46, 20, 659862)
また、タイムゾーンは、サーバー上およびコード行を実行する django アプリケーションでは Europe/Vienna です。
また、あなたが提案したものと同様の行を実行してみました:
(pytz.timezone(settings.TIME_ZONE).localize(datetime.now(), is_dst=True) - \
timedelta(days=13)).strftime('%Y-%m-%d')
しかし、同じ結果が得られました...そのため、タイムゾーンとはあまり関係がないと思います。しかし同時に、他にどこを見ればよいのかわからない。