I agree. I just keep rewriting the parse method again and again. wy
def parse_iso8601_date(s): """ Parse date in iso8601 format e.g. 2003-09-15T10:34:54 and returns a datetime object. """ y=m=d=hh=mm=ss=0 if len(s) not in [10,19,20]: raise ValueError('Invalid timestamp length - "%s"' % s) if s[4] != '-' or s[7] != '-': raise ValueError('Invalid separators - "%s"' % s) if len(s) > 10 and (s[13] != ':' or s[16] != ':'): raise ValueError('Invalid separators - "%s"' % s) try: y = int(s[0:4]) m = int(s[5:7]) d = int(s[8:10]) if len(s) >= 19: hh = int(s[11:13]) mm = int(s[14:16]) ss = int(s[17:19]) except Exception, e: raise ValueError('Invalid timestamp - "%s": %s' % (s, str(e))) return datetime(y,m,d,hh,mm,ss) > I was a little surprised to recently discover > that datetime has no method to input a string > value. PEP 321 appears does not convey much > information, but a timbot post from a couple > years ago clarifies things: > > http://tinyurl.com/epjqc > >> You can stop looking: datetime doesn't >> support any kind of conversion from string. >> The number of bottomless pits in any datetime >> module is unbounded, and Guido declared this >> particular pit out-of-bounds at the start so >> that there was a fighting chance to get >> *anything* done for 2.3. > > I can understand why datetime can't handle > arbitrary string inputs, but why not just > simple iso8601 format -- i.e. the default > output format for datetime? > > Given a datetime-generated string: > > >>> now = str(datetime.datetime.now()) > >>> print now > '2006-02-23 11:03:36.762172' > > Why can't we have a function to accept it > as string input and return a datetime object? > > datetime.parse_iso8601(now) > > Jeff Bauer > Rubicon, Inc. > -- http://mail.python.org/mailman/listinfo/python-list