Current implementation of datetime
is not fully portable.
#435
Labels
bug
reported or triaged as proper bug, i.e. not working as designed, and affecting all platforms
compatibility
reported or triaged as compatibility issue, i.e. affecting only some build or runtime environments
The current implementation of
datetime
in all branches (v3.7, v3.8 and v4.0) relies onstd::time_t
representing time as a genuine POSIX timestamp, i.e. seconds since 1970-01-01 00:00 UTC minus leap seconds (or, more formally, days since 1970-01-01 00:00 UTC × 86,400 + seconds since 00:00 UTC),Although this is typical, and even required for strict POSIX compliance, it is not guaranteed by the C++ standard, and even some POSIXoid systems do exist that do not conform, e.g. systems using a clock based on TAI rather than UTC, with
std::time_t
representing time as seconds since 1970-01-01 00:00 UTC including leap seconds: On such systems, our current solution would currently be off by ca. 30 seconds.The C++ standard does not even guarantee a unit duration of 1 second, nor that a numeric value of 0 corresponds to 1970-01-01 00:00 (UTC, local, or otherwise).
The text was updated successfully, but these errors were encountered: