Why does isoformat() optionally not print the fractional seconds?

Travis Griggs travisgriggs at gmail.com
Tue Apr 22 20:05:44 EDT 2014


Python(3) let me down today. Better to be explicit, and all that, didn’t pan out for me.

I have time series data being recorded in a mongo database (I love pymongo). I have an iOS app that consumes the data. Since JSON doesn’t have a time format, I have to stringify the times when transmitting between the two. To parse it on the obj-c side, I use 

    NSDateFormatter *parser = [NSDateFormatter new];
    parser = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    [parser setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.S”];
    NSDate *date = [parser dateFromString: thatJsonString];

Which was working swimmingly, until I started getting occasional and infrequent nil dates at times. I thought I had a storage issue or something with my REST api, or the server, or something. But it was simply now and then again, why 1000’s of data points, I managed to get 0 milliseconds from time to time, which resulted in the isoformat() I was using to suddenly leave off the .S part of the string. And since the parse then failed, the iOS side decided it wasn’t valid and returned a nil.

Haven’t decided where/how I’ll work around it yet, but the isoformat() seemed unpythonic to me today.

Thanks for hearing me whine.




More information about the Python-list mailing list