[RFC] In do_get_time, %S from 0 to 59, or 60, or even 61?!?
Martin Sebor
sebor@roguewave.com
Fri Aug 27 15:38:00 GMT 2004
Paolo Carlini wrote:
> Hi,
>
> in do_get_time, when we encounter %S we reject anything bigger than
> 59... However,
> the C99 standard is very clear about the leap-second issue that leads to
> 60 being also
> a valid value both in strftime and in tm.tm_sec. AFAIK, C89 even
> consider ok *two*
> leap seconds, up to 61, crazy...
Correct. C99 changed it to 60 (see 7.23, p4).
>
> Shall we at least accept 60 too? I'm tempted to think so, since
> otherwise we may
> be unable to read back the output of by time_put (which uses internally
> just strftime!)
In alignment with C99, POSIX (SUSv3) strptime() accepts values
in the range [0,60]. Being based on C89, SUSv2 accepts [0,61].
I would do whatever strftme()/strptime() does on each platform.
FWIW, here's an interesting paper on the history of the leap
second:
http://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf
Martin
More information about the Libstdc++
mailing list