def strp_isoformat(strg):
    """Decode an ISO formatted string to a datetime object.
    Allow a time-string without microseconds.

    We handle input like: 2011-11-14T12:51:25.123456
    """
    if isinstance(strg, datetime):
        return strg
    if len(strg) < 19 or len(strg) > 26:
        if len(strg) > 30:
            strg = strg[:30] + '...'
        raise ValueError("Invalid ISO formatted time string '%s'"%strg)
    if strg.find(".") == -1:
        strg += '.000000'
    if sys.version[0:3] >= '2.6':
        return datetime.strptime(strg, "%Y-%m-%dT%H:%M:%S.%f")
    else:
        dat, mis = strg.split(".")
        dat = datetime.strptime(dat, "%Y-%m-%dT%H:%M:%S")
        mis = int(float('.' + mis)*1000000)
        return dat.replace(microsecond=mis)
def strp_isoformat ( strg ) : if isinstance ( strg , datetime ) : return strg if len ( strg ) < 19 or len ( strg ) > 26 : if len ( strg ) > 30 : strg = strg [ : 30 ] + '...' raise ValueError ( "Invalid ISO formatted time string '%s'" % strg ) if strg . find ( "." ) == - 1 : strg += '.000000' if sys . version [ 0 : 3 ] >= '2.6' : return datetime . strptime ( strg , "%Y-%m-%dT%H:%M:%S.%f" ) else : dat , mis = strg . split ( "." ) dat = datetime . strptime ( dat , "%Y-%m-%dT%H:%M:%S" ) mis = int ( float ( '.' + mis ) * 1000000 ) return dat . replace ( microsecond = mis )
Decode an ISO formatted string to a datetime object.
    Allow a time-string without microseconds.

    We handle input like: 2011-11-14T12:51:25.123456