2012-05-09 172 views
1

我不得不接受一个字符串表示的日期通过time.strptime类似于%d%M%Y的格式来处理,但事情是,当这一天数小于10,则这一天将以%d格式所要求的一位数字显示,而不是两位数字。自定义格式指令

这意味着,

'8052012' 

将transalted为

day 08, month 05, year 2012 

但与字符串

'2052012' 

strptime给我

day 20, month 5, year 2012 

代替

day 2, month 5, year 2012 

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

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

+0

你怎么能告诉我们,如果日期是20/5/2012或2012年2月5日? –

+0

通过上下文...我收到某些实际日期这个字符串,所以20-05-2012还没有happend还没有的话,那是2012-05-02 –

+0

什么20/04?这不是暧昧吗? –

回答

6

你知道更多关于这个数据比time.strptime可以从格式字符串知道。

通过预先'0'消除不确定性时的日期字符串有7

+0

好的,这是一种可能性......我在寻找内在的解决问题的Python库中的内容,但如果没有办法,那么我会照你说的去做...... –

+0

显然没有办法,因为1112010可能是1月11日或11月1日。 –

+0

nope,因为月总是有两个数字...我会通过修改我的帖子来指定... –

1

对于我来说,它看起来像问题,打印该字符串的长度。通常%d返回2位数字(见:http://docs.python.org/library/time.html#time.strftime)。也许你将这样的字符串转换为long或int值并打印出来?如果你真的需要解析这样的值,那么假设你应该验证这个入口的长度。

0

你可以尝试从结尾开始计算:

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