我正在尝试在Python中转换/格式化日期..
目前输出:
2014年1月8日
我希望输出为:
1月3日星期一
在此处理解文档时遇到问题,请暂停格式化日期?
答案 0 :(得分:2)
你不能一气呵成。如果您查看strftime()
and strptime()
Behavior的文档,则会有完整工作日(%A
)和月份(%B
)的格式代码,但是作为序数的月份没有任何内容
一般情况下,只要你想做strftime
无法做的事情,尽可能多地使用它,并将其与显式代码结合起来。像这样:
def ordinal(n):
if 11 <= n <= 13:
return '{}th'.format(n)
if n%10 == 1:
return '{}st'.format(n)
elif n%10 == 2:
return '{}nd'.format(n)
elif n%10 == 3:
return '{}rd'.format(n)
else:
return '{}th'.format(n)
然后,你可以这样做:
def my_format(dt):
return '{} {}'.format(dt.strftime('%A, %B'), ordinal(dt.day))
我假设你开始使用date
或datetime
对象。如果没有,你当然必须先解析它。但这很容易:
datestring = '2014-01-08'
dt = datetime.datetime.strptime(datestring, '%Y-%m-%d')