Function reads a string (the input is a string to allow
conversion of angles between -1 and zero hours) with hours, minutes,
and seconds separated by any of characters d, m, s, a colon, or a
comma. Spaces are not valid separators, as they are removed as part
of input parsing. Zeros are the default if values for minutes or
seconds are missing from the string. A minus sign before the hours
indicates negative hours. Decimal values are allowed in any
position.