https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114240

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
So this would fix it:

--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -2826,7 +2826,9 @@ namespace __detail
        __offset = &__off;
       using __format::_ChronoParts;
       auto __need = _ChronoParts::_Year | _ChronoParts::_Month
-                   | _ChronoParts::_Day | _ChronoParts::_TimeOfDay;
+                   | _ChronoParts::_Day;
+      if constexpr (ratio_less_v<typename _Duration::period, days::period>)
+       __need |= _ChronoParts::_TimeOfDay;
       __detail::_Parser_t<_Duration> __p(__need);
       if (__p(__is, __fmt, __abbrev, __offset))
        {

A similar fix is needed for the from_stream overload for local_time, but
utc_time, gps_time and tai_time will be fixed by changing the sys_time
overload.

Reply via email to