std::chrono::time_of_day
From cppreference.com
                    
                                        
                    
                    
                                                            
                    | Defined in header  <chrono> | ||
| template< class Duration > class time_of_day; // not defined | (1) | (since C++20) | 
| template<> class time_of_day<std::chrono::hours>; | (2) | (since C++20) | 
| template<> class time_of_day<std::chrono::minutes>; | (3) | (since C++20) | 
| template<> class time_of_day<std::chrono::seconds>; | (4) | (since C++20) | 
| template< class Rep, class Period >  class time_of_day<std::chrono::duration<Rep, Period>>; | (5) | (since C++20) | 
The class template time_of_day splits a std::chrono::duration representing time since midnight into a "broken down" time such as hours:minutes:seconds, with the precision of the split determined by the Duration template parameter. It also tracks whether it should be output in a 12-hour time format or a 24-hour time format. It is primarily a formatting tool.
The primary template (1) is not defined; four specializations are provided to handle four different levels of precision.
Each specialization of time_of_day is a TriviallyCopyable StandardLayoutType. 
The partial specialization (5) only exists if std::chrono::treat_as_floating_point_v<Rep> is false and std::chrono::duration<Rep, Period> is not convertible to std::chrono::seconds.
Member types
| Member type | Definition | 
| precision | Duration | 
Member functions
| constructs a time_of_day(public member function) | |
| accesses components of the broken-down time (public member function) | |
| accesses the stored std::chrono::duration (public member function) | |
| changes the time format used for output (public member function) | 
Nonmember functions
| outputs a time_of_dayinto a stream(function template) |