環境によってはstrftime()で%b等で英語表記にしようとすると日本語になってしまう。
import locale
locale.setlocale(locale.LC_ALL,'en_US')
でロケールを変更する。
(追記: 2013.4.26)
PCの使用可能なロケールに依存してしまうので、localeによる設定は汎用性がないかもしれないので、次のようなモジュールを作って利用するのがよさそう。
from datetime import datetime
from dateutil.relativedelta import relativedelta
__months__ = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
def d2s(d, fmt='%HZ%d%b%Y'):
if not isinstance(d, datetime):
raise TypeError, "input must be datetime.datetime obejct"
fmt = fmt.replace('%b', __months__[d.month-1])
if d.year < 1900:
fmt = fmt.replace('%Y', '{:04d}'.format(d.year))
d = d + relativedelta(year=1900)
return d.strftime(fmt)
関数d2sを呼び出して、
>>> d2s(datetime(2009,10,13,12))
'12Z13OCT2009'
>>> d2s(datetime(2009,10,13,12), fmt='%H:%MZ:%d%b%Y')
'12:00Z13OCT2009'