C++ - Chrono Time & Date
Overview
Estimated time: 45–65 minutes
Measure time, schedule sleeps, and format timestamps using chrono. Learn durations, time points, clocks, and best practices.
Learning Objectives
- Use durations and time_points with system_clock and steady_clock.
- Convert between units safely and format time for output.
Prerequisites
Durations and conversions
#include
#include
int main(){
using namespace std::chrono;
auto ms = 1500ms;
auto s = duration_cast(ms);
std::cout << s.count() << "s\n"; // 1
}
Measure elapsed time
#include
#include
#include
int main(){
using namespace std::chrono;
auto start = steady_clock::now();
std::this_thread::sleep_for(50ms);
auto end = steady_clock::now();
std::cout << duration_cast(end-start).count() << "ms\n";
}
Format timestamp
#include
#include
#include
int main(){
auto now = std::chrono::system_clock::now();
std::cout << std::format("{}\n", now);
}
Common Pitfalls
- Using system_clock for measuring elapsed time (subject to wall-clock adjustments). Prefer steady_clock.
- Overflow when converting durations; use duration_cast and appropriate units.
Checks for Understanding
- When to use steady_clock vs system_clock?
- How do you convert milliseconds to seconds?
Show answers
- Use steady_clock for measuring intervals; system_clock for wall-clock time.
duration_cast
.(ms)
Exercises
- Implement a stopwatch that prints elapsed ms between two events.
- Print current date/time every second for five seconds.