1

我必须接收一个代表日期的字符串,以便通过 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 将无法选择使用当天剩下的内容?)

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

4

3 回答 3

6

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

'0'通过在日期字符串长度为 7 时添加前缀来消除歧义。

于 2012-05-09T18:52:26.927 回答
1

对我来说,打印该字符串似乎有问题。通常 %d 返回 2 位数字(参见:http ://docs.python.org/library/time.html#time.strftime )。也许您将此类字符串转换为 long 或 int 值并打印它?如果您确实需要解析此类值,假设您应该验证此类条目的长度。

于 2012-05-09T18:53:25.133 回答
0

您可以尝试从最后数数:

dd='2052012'
print 'Day', dd[:-6], 'Month:',dd[-6:-4], 'Year: ', dd[-4:]
于 2012-05-09T18:59:23.780 回答