From 4239a31c5928981b1582a7762458b080b8fda5ff Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Wed, 1 May 2024 16:42:35 +0500 Subject: feat: method for converting a string to time point --- src/utils/chrono.cpp | 18 ++++++++++++++++++ src/utils/chrono.hpp | 4 ++++ 2 files changed, 22 insertions(+) (limited to 'src/utils') diff --git a/src/utils/chrono.cpp b/src/utils/chrono.cpp index 64ad32a..7a7f2c9 100644 --- a/src/utils/chrono.cpp +++ b/src/utils/chrono.cpp @@ -1,6 +1,10 @@ #include "chrono.hpp" +#include #include +#include +#include +#include #include namespace bot::utils::chrono { @@ -27,4 +31,18 @@ namespace bot::utils::chrono { return std::to_string(d) + "d" + std::to_string(h) + "h"; } } + + std::chrono::system_clock::time_point string_to_time_point( + const std::string &value, const std::string &format) { + std::tm tm = {}; + std::stringstream ss(value); + + ss >> std::get_time(&tm, format.c_str()); + + if (ss.fail()) { + throw std::invalid_argument("Invalid time format"); + } + + return std::chrono::system_clock::from_time_t(std::mktime(&tm)); + } } diff --git a/src/utils/chrono.hpp b/src/utils/chrono.hpp index 5d0b3ed..7e85e70 100644 --- a/src/utils/chrono.hpp +++ b/src/utils/chrono.hpp @@ -1,7 +1,11 @@ #pragma once +#include #include namespace bot::utils::chrono { std::string format_timestamp(int seconds); + std::chrono::system_clock::time_point string_to_time_point( + const std::string &value, + const std::string &format = "%Y-%m-%d %H:%M:%S"); } -- cgit v1.2.3