On Wed, 2012-05-09, Javier Novoa C. wrote: > Hi, > > I am using time.strptime method as follows: > > I receive an input string, representing some date in the following > format: > > %d%m%Y > > However, the day part may be a single digit or two, depending on > magnitude. > > For example: > > '10052012' will be parsed as day 10, month 5, year 2012 > > Again: > > '8052012' will be parsed as day 8, month 5, year 2012 > > What happens when day is 1 or 2? > > '1052012' will be parsed as day 10, month 5, year 2012 !!!! > > That's not the expected behaviour! Not for me at least. I mean, in my > case, month will always be a 2 digit string, so there's no ambiguity > problem by pretending that... say '1052012' is correctly parsed. > > Is there a way out of here? I know I can pre-parse the string and > append a '0' to it when lenght == 7, but I think that a better way > would be if strptime allowed me to define my format in a better > way... To say that the month is the optional one-two digit part is > just a default, isn't it? Why can't I specify that the day part is the > one with one-or-two digits on the input string...? > > Or is there a way out that I don't know yet?
You'd have to read the strptime(3) manual page (it's a Unix function, imported straight into Python, I'm sure). Judging from a quick read it's not intended to support things like these. I'm surprised it doesn't parse your last example to (10, 52, 12) and then fail it due to month>12. Can't you use a standard date format, like ISO? Apart from not being possible to parse with standard functions, this one looks quite odd and isn't very human-readable. If you have to use this format, I strongly recommend parsing it "manually" as text first. Then you can create an ISO date and feed that to strptime, or perhaps use your parsed (day, month, year) tuple directly. /Jorgen -- // Jorgen Grahn <grahn@ Oo o. . . \X/ snipabacken.se> O o . -- http://mail.python.org/mailman/listinfo/python-list