P.46 03-02 CGIHTTPServer を使う のつづきのつづき

datetimeモジュール を使って現在時刻を取得し、文字列フォーマット機能 を使って表示しました。
年以外の数字が1桁で表示されたり、2桁で表示されたりするのが気持ちわるかったので、全て2桁で統一したいと思いました。変換フラグとやらを使うことで何とかなりそうです。

一つの変換指定子は 2 またはそれ以上の文字を含み、その構成要素は 以下からなりますが、示した順に出現しなければなりません:
(略)
3.変換フラグ (オプション)。一部の変換型の結果に影響します。

http://www.python.jp/doc/2.4/lib/typesseq-strings.html

変換フラグ文字を以下に示します:

フラグ 意味
# 値の変換に (下で定義されている) ``別の形式'' を使います。
0 数値型に対してゼロによるパディングを行います。
- 変換された値を左寄せにします ("0" と同時に与えた 場合、"0" を上書きします) 。
(スペース) 符号付きの変換で正の数の場合、前に一つスペースを空けます (そうでない場合は空文字になります) 。
+ 変換の先頭に符号文字 ("+" または "-") を付けます("スペース" フラグを上書きします) 。
http://www.python.jp/doc/2.4/lib/typesseq-strings.html

正直よくわからないものの、例示されているコードと同様に「0」(数値型に対してゼロによるパディングを行います。)を使ってみたところ、思惑通り2桁で表示されているようです。とりあえず由とします。

html_body = """
<html><body>
%d/%02d/%02d %02d:%02d:%02d
</body></html>"""
出力例(修正前)
2008/1/14 22:56:1
出力例(修正後)
2008/01/14 22:57:01