我正在尝试将“DD-m m-YYYY”格式的字符串转换为datetime对象。如果日期中的日期是个位数,我希望输出中的日期整数由个位数组成。例如,在转换为datetime对象而不是“2014年5月1日”之后,输入“2014年5月1日”应转换为“2014年5月1日”。
为此,我使用了%e格式来转换输出日期中的日期。下面是相同的代码:
import datetime
from datetime import timedelta
s = "1 July 2013"
d = datetime.datetime.strptime(s, "%e %B %Y")
print d.strftime("%e %B %Y")
但是,我得到了以下错误:
ValueError: 'e' is a bad directive in format '%e %B %Y'
格式有什么问题?如果有帮助的话,我正在使用Python2.7。
%e
不是保证Python的datetime.strftime
可以处理的格式代码。有关Python保证支持的格式代码列表,请参阅table here。然而,由于CPython的strftime
调用了底层C库的strftime,在某些操作系统(如Linux)上,^{上面写着
没有其他格式代码(保证存在)的行为类似于
%e
。因此,如果您的系统没有%e
,或者您希望代码与跨平台兼容,请使用字符串格式,如Zacrath或Jon Clements所示。你想要什么似乎没有指示。您可以使用零填充,也可以将最后一行更改为
print d.strftime("%d %B %Y").lstrip('0')
。可以使用
str.format
将字符串格式和属性访问与strftime
样式混合使用,例如:相关问题 更多 >
编程相关推荐