#include "util/TimeUtils.hpp" #include #include #include #include #include #include #include #include namespace util { [[nodiscard]] std::optional systemTpFromUtcStr(std::string const& dateStr, std::string const& format) { std::tm timeStruct{}; auto const ret = strptime(dateStr.c_str(), format.c_str(), &timeStruct); if (ret == nullptr) { return std::nullopt; } return std::chrono::system_clock::from_time_t(timegm(&timeStruct)); } [[nodiscard]] std::string systemTpToUtcStr(std::chrono::system_clock::time_point const& tp, std::string const& format) { auto const formatWrapped = fmt::format("{{:{}}}", format); return fmt::format(fmt::runtime(formatWrapped), std::chrono::floor(tp)); } [[nodiscard]] std::chrono::system_clock::time_point systemTpFromLedgerCloseTime(xrpl::NetClock::time_point closeTime) { return std::chrono::system_clock::time_point{closeTime.time_since_epoch() + xrpl::kEpochOffset}; } } // namespace util