Working with dates and time in C++ can be a bit tricky, but the std::chrono library provides a powerful set of tools for handling time-related operations. In this blog post, we’ll explore how to add and subtract dates using std::chrono.
Table of Contents
Introduction
The std::chrono library is part of the C++ Standard Library and provides a comprehensive set of tools for managing time. It includes various time-related components, such as clocks, durations, and time points.
When working with dates, std::chrono provides the std::chrono::time_point class, which represents a specific point in time. A time point can be created using a clock and is often used to perform date calculations.
Adding Dates
To add dates using std::chrono, we can utilize the std::chrono::duration class. A duration represents a specific span of time and can be added or subtracted from a time point.
Here’s an example that demonstrates how to add days to a given time_point:
#include <iostream>
#include <chrono>
int main()
{
using namespace std::chrono;
// Create a time_point representing a specific date
system_clock::time_point currentDate = system_clock::now();
// Add 7 days to the current date
days sevenDays(7);
system_clock::time_point newDate = currentDate + sevenDays;
// Display the new date
std::time_t newDateAsTimeT = system_clock::to_time_t(newDate);
std::cout << "New date: " << std::ctime(&newDateAsTimeT);
return 0;
}
In this example, we create a time_point called currentDate representing the current date. Then, we create a days object with a value of 7, which indicates 7 days.
We add the days object to the currentDate, resulting in a new time_point called newDate. Finally, we convert newDate to a std::time_t object and print it using std::ctime.
Subtracting Dates
Subtracting dates works similarly to adding dates. We can use the std::chrono::duration class to subtract a duration from a time point.
Here’s an example that demonstrates how to subtract a week from a given time_point:
#include <iostream>
#include <chrono>
int main()
{
using namespace std::chrono;
// Create a time_point representing a specific date
system_clock::time_point currentDate = system_clock::now();
// Subtract 7 days from the current date
days sevenDays(7);
system_clock::time_point newDate = currentDate - sevenDays;
// Display the new date
std::time_t newDateAsTimeT = system_clock::to_time_t(newDate);
std::cout << "New date: " << std::ctime(&newDateAsTimeT);
return 0;
}
In this example, we create a time_point called currentDate representing the current date. We subtract a days object with a value of 7 from the currentDate, resulting in a new time_point called newDate.
Finally, we convert newDate to a std::time_t object and print it using std::ctime.
Conclusion
The std::chrono library in C++ provides a convenient way to perform date calculations by using the std::chrono::duration class. By adding or subtracting durations from a time_point, we can easily manipulate dates and perform various time-related operations.
Using the examples in this blog post, you can now confidently add or subtract dates with std::chrono in your C++ programs.
References: