Home > Backend Development > C++ > How Can I Parse Date Strings and Calculate Elapsed Time Using C 11\'s std::chrono?

How Can I Parse Date Strings and Calculate Elapsed Time Using C 11\'s std::chrono?

Barbara Streisand
Release: 2024-11-29 22:29:10
Original
533 people have browsed it

How Can I Parse Date Strings and Calculate Elapsed Time Using C  11's std::chrono?

Parsing Date Strings with C 11 std::chrono

When working with date and time information, it's often necessary to parse a date string into a suitable data representation. For C 11, the std::chrono namespace provides powerful tools for handling time durations and time points.

Parsing Date Strings

To parse a date string into std::chrono, GCC provides the std::get_time function. Given a std::tm object and a format string, std::get_time can extract the date and time components from the input string. The following code snippet demonstrates this:

std::tm tm = {};
std::stringstream ss("Jan 9 2014 12:35:34");
ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");
Copy after login

GCC versions prior to 5 do not implement std::get_time. As an alternative, you can use strptime:

std::tm tm = {};
strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
Copy after login

Calculating Elapsed Time

Once you have the parsed date and time in a std::tm object, you can convert it to a time_point using std::chrono::system_clock::from_time_t:

auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
Copy after login

This time_point represents the parsed date and time in the current time zone. To calculate the elapsed time since the parsed date, subtract the current time_point from the parsed time_point:

auto now = std::chrono::system_clock::now();
auto elapsed = now - tp;
Copy after login

Accessing Time Components

The std::chrono::duration object provides access to the elapsed time components. To retrieve the number of seconds, minutes, hours, and days, use the following functions:

auto seconds = std::chrono::duration_cast<std::chrono::seconds>(elapsed).count();
auto minutes = std::chrono::duration_cast<std::chrono::minutes>(elapsed).count();
auto hours = std::chrono::duration_cast<std::chrono::hours>(elapsed).count();
auto days = std::chrono::duration_cast<std::chrono::days>(elapsed).count();
Copy after login

By utilizing these techniques, you can effectively parse date strings into std::chrono time points and calculate the elapsed time since the parsed date, providing access to the desired time components in a convenient and efficient manner.

The above is the detailed content of How Can I Parse Date Strings and Calculate Elapsed Time Using C 11\'s std::chrono?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template