date、 datetime、および time
オブジェクトは全て、明示的な書式化文字列でコントロールして
時刻表現文字列を生成するための strftime(format) メソッドを
サポートしています。大雑把にいうと、d.strftime(fmt)
は time モジュールの time.strftime(fmt, d.timetuple())
のように動作します。ただし全てのオブジェクトが timetuple()
メソッドをサポートしているわけではありません。
time オブジェクトでは、年、月、日の値がないため、それらの
書式化コードを使うことができません。無理矢理使った場合、
年は 1900 に置き換えられ、月と日は 0 に置き換え
られます。
date オブジェクトでは、時、分、秒の値がないため、
それらの書式化コードを使うことができません。無理矢理使った場合、
これらの値は 0 に置き換えられます。
naive オブジェクトでは、書式化コード %z および %Z
は空文字列に置き換えられます。
aware オブジェクトでは以下のようになります:
%ztimedelta(hours=-3, minutes=-30)
を返した場合、%z は文字列 '-0330' に置き換わります。
%ZNone を返した場合、%Z は
空文字列に置き換わります。そうでない場合、%Z は返された
値に置き換わりますが、これは文字列でなければなりません。
Python はプラットフォームの C ライブラリから strftime() 関数を呼び出し、プラットフォーム間のバリエーションはよくあることなので、 サポートされている書式化コードの全セットはプラットフォーム間で異なります。 Python の time モジュールのドキュメントでは、C 標準 (1989 年版) が要求する書式化コードをリストしており、これらのコードは 標準 C 準拠の実装がなされたプラットフォームでは全て動作します。 1999 年版の C 標準では書式化コードが追加されているので注意してください。
strftime() が正しく動作する年の厳密な範囲はプラットフォーム 間で異なります。プラットフォームに関わらず、1900 年以前の年は 使うことができません。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。