https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114279
Bug ID: 114279 Summary: utc_clock does not support leap seconds Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: gnaggnoyil at gmail dot com Target Milestone: --- When using current GCC trunk, the program #include <chrono> #include <sstream> #include <iostream> int main(){ std::stringstream stream; stream << "20161231-23:59:60.035"; std::chrono::utc_time<std::chrono::milliseconds> utc_tp; (void)std::chrono::from_stream(stream, "%4Y%2m%2d-%2H:%2M:%S", utc_tp); std::cout << utc_tp << std::endl; return 0; } gives the following output: 2017-01-01 00:00:00.035 which does not seems to give leap seconds into consideration. The current standard working draft [time.clock.utc.overview]#1 states In contrast to sys_time, which does not take leap seconds into account, utc_clock and its associated time_point, utc_time, count time, including leap seconds, since 1970-01-01 00:00:00 UTC. So I think the current libstdc++ implementation here is not conforming the standard.