grahn+nntp at snipabacken
May 9, 2012, 1:11 PM
Post #3 of 5
On Wed, 2012-05-09, Javier Novoa C. wrote:
> I am using time.strptime method as follows:
> I receive an input string, representing some date in the following
> However, the day part may be a single digit or two, depending on
> For example:
> '10052012' will be parsed as day 10, month 5, year 2012
> '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
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
// Jorgen Grahn <grahn@ Oo o. . .
\X/ snipabacken.se> O o .