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