Duration::fromChronoString() and Duration::fromTimeString() only negated the
hour component of a signed input. When the hour was zero or absent the sign was
silently dropped, and when it was present the minute/second/fraction components
stayed positive, producing a duration that did not match the input. Prefix every
unit token with the sign so the whole duration is negated consistently.
Duration::fromChronoString() and Duration::fromTimeString() only negated the
hour component of a signed input. When the hour was zero or absent the sign was
silently dropped, and when it was present the minute/second/fraction components
stayed positive, producing a duration that did not match the input. Prefix every
unit token with the sign so the whole duration is negated consistently.