python strptime的自定义格式指令

时间:2012-05-09 18:43:22

标签: python time strptime string-to-datetime

我必须收到一个字符串,表示通过time.strptime处理的日期,格式类似于%d%m%Y,但事实是当天数小于10时,那天将显示为一位数字,而不是两位数字,因为%d格式需要。

这意味着

'8052012'

将被转换为

day 08, month 05, year 2012

但是用字符串

'2052012'

strptime给了我

day 20, month 5, year 2012

而不是

day 2, month 5, year 2012

有没有解决此默认行为的方法? (也许是为了强制%m应该是一个2位数字,所以strptime将没有选择使用当天剩下的东西?)

编辑:请注意,在输入字符串上,月份总是有两位数,即使它可以用一个数字表示。这里的问题只是可能用一位或两位数表示的日子,具体取决于幅度......

3 个答案:

答案 0 :(得分:6)

您对此数据的了解比time.strptime可以从格式字符串中了解的更多。

当日期字符串的长度为7时,通过预先'0'来消除歧义。

答案 1 :(得分:1)

对我而言,打印该字符串似乎有问题。通常%d返回2位数(请参阅:http://docs.python.org/library/time.html#time.strftime)。也许你将这样的字符串转换为long或int值并打印出来?如果你真的需要解析这样的值假设你应该验证这种条目的长度。

答案 2 :(得分:0)

您可以尝试从最后开始计算:

dd='2052012'
print 'Day', dd[:-6], 'Month:',dd[-6:-4], 'Year: ', dd[-4:]