Pythonで文字列からdatetimeオブジェクトを生成する

文字列からdatetimeオブジェクトを生成する場合、2.5で追加されたdatetime.strptimeが使えます

from datetime import datetime

datetime.strptime('20120120', '%Y%m%d')
# => 2012-01-20 00:00:00

第1引数に日付を表す文字列を、第2引数にフォーマット文字列を指定します。

フォーマットについてはこちらに表があります
http://www.python.jp/doc/release/library/datetime.html#strftime-strptime


フォーマットに合わない文字列を渡すとValueErrorが発生します。

# 日を含まない
print datetime.strptime('20121', '%Y%m%d')
# => ValueError: time data '20121' does not match format '%Y%m%d'
# 余計な日を含む
print datetime.strptime('20120120', '%Y%m')
# => ValueError: unconverted data remains: 20

文字列で表現していない月、日についてはそれぞれ、1月、1日になります
時分秒については0になります

print datetime.strptime('2012', '%Y')
# => 2012-01-01 00:00:00

あんまり年を省略するというのはないと思いますが、省略すると1900年になります

print datetime.strptime('1', '%m')
# => 1900-01-01 00:00:00