Handle HL7 dates before year 1900. Properly parse the fractional seconds...

....

strftime() raises an exception for years before 1900.
Since HL7 dates are ISO 8601 but without the separators
(except for "."), use isoformat() and remove the separators.

Based on this description:

The value of a point in time is represented using the ISO 8601 compliant form traditionally in use with HL7. This is the form that has no decorating dashes, colons and no “T” between the date and time. In short, the syntax is “YYYYMMDDHHMMSS.UUUU[+|-ZZzz]” where digits can be omitted from the right side to express less precision. Common forms are “YYYYMMDD” and “YYYYMMDDHHMM”, but the ability to truncate on the right side is not limited to these two variants.
http://www.hl7standards.com/blog/2008/07/25/hl7-time-zone-qualification/