我必须收到一个字符串,表示通过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将没有选择使用当天剩下的东西?)
编辑:请注意,在输入字符串上,月份总是有两位数,即使它可以用一个数字表示。这里的问题只是可能用一位或两位数表示的日子,具体取决于幅度......
答案 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:]