5.1.7 strftime() の振る舞い

datedatetime、および time オブジェクトは全て、明示的な書式化文字列でコントロールして 時刻表現文字列を生成するための strftime(format) メソッドを サポートしています。大雑把にいうと、d.strftime(fmt)time モジュールの time.strftime(fmt, d.timetuple()) のように動作します。ただし全てのオブジェクトが timetuple() メソッドをサポートしているわけではありません。

time オブジェクトでは、年、月、日の値がないため、それらの 書式化コードを使うことができません。無理矢理使った場合、 年は 1900 に置き換えられ、月と日は 0 に置き換え られます。

date オブジェクトでは、時、分、秒の値がないため、 それらの書式化コードを使うことができません。無理矢理使った場合、 これらの値は 0 に置き換えられます。

naive オブジェクトでは、書式化コード %z および %Z は空文字列に置き換えられます。

aware オブジェクトでは以下のようになります:

%z
utcoffset() は +HHMM あるいは -HHMM の形式をもった 5 文字の文字列に変換されます。HH は UTC オフセット時間を与える 2 桁の文字列で、MM は UTC オフセット分を与える 2 桁の文字列です。 例えば、utcoffset()timedelta(hours=-3, minutes=-30) を返した場合、%z は文字列 '-0330' に置き換わります。

%Z
tzname()None を返した場合、%Z は 空文字列に置き換わります。そうでない場合、%Z は返された 値に置き換わりますが、これは文字列でなければなりません。

Python はプラットフォームの C ライブラリから strftime() 関数を呼び出し、プラットフォーム間のバリエーションはよくあることなので、 サポートされている書式化コードの全セットはプラットフォーム間で異なります。 Python の time モジュールのドキュメントでは、C 標準 (1989 年版) が要求する書式化コードをリストしており、これらのコードは 標準 C 準拠の実装がなされたプラットフォームでは全て動作します。 1999 年版の C 標準では書式化コードが追加されているので注意してください。

strftime() が正しく動作する年の厳密な範囲はプラットフォーム 間で異なります。プラットフォームに関わらず、1900 年以前の年は 使うことができません。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。