strptime format string nasty default

Garrett Cooper yanegomi at gmail.com
Wed May 9 15:54:51 EDT 2012


On May 9, 2012, at 12:38 PM, "Javier Novoa C." <jstitch at invernalia.homelinux.net> 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?

    Delimiters, e.g. dashes, slashes, etc, can remove ambiguity in the date string. Leading 0s in elements in the date would help as well.
HTH!
-Garrett


More information about the Python-list mailing list