以下のコードが UNIX エポック タイムスタンプ (タイムゾーン UTC+1) の 1 時間を減算する理由がわかりません。
import datetime
import pytz
start_dt = datetime.datetime.fromtimestamp( 1362268800 , pytz.utc )
print start_dt
# prints datetime.datetime(2013, 3, 3, 0, 0, tzinfo=<UTC>)
print int( start_dt.strftime("%s") )
# prints: 1362265200 (which is 2013-03-02T23:00Z ) <--- I expected 1362268800
print start_dt.strftime("%Y-%m-%dT%H:%M:%SZ")
# prints: 2013-03-03T00:00:00Z
それ以来、を使用して問題を回避しましcalendar.timegm( start_ts.timetuple() )
たが、上記のコードの何が問題なのか、UTC で strftime がエポック タイムスタンプを出力する場所にある datetime オブジェクトを作成する方法を根本的に疑問に思います。
Python ドキュメントによると、「%s」の使用は特に許可されていません。結果が混乱する場合、明示的に許可しない (つまり、例外を発生させる) べきですか?
Python 2.7.3 の使用