From f9859164676f8fc3fa174d6c351308e6acc2b369 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Wed, 1 May 2024 00:14:07 +0500 Subject: feat: method for humanizing timestamps --- src/utils/chrono.cpp | 30 ++++++++++++++++++++++++++++++ src/utils/chrono.hpp | 7 +++++++ 2 files changed, 37 insertions(+) create mode 100644 src/utils/chrono.cpp create mode 100644 src/utils/chrono.hpp diff --git a/src/utils/chrono.cpp b/src/utils/chrono.cpp new file mode 100644 index 0000000..64ad32a --- /dev/null +++ b/src/utils/chrono.cpp @@ -0,0 +1,30 @@ +#include "chrono.hpp" + +#include +#include + +namespace bot::utils::chrono { + std::string format_timestamp(int seconds) { + int d = round(seconds / (60 * 60 * 24)); + int h = round(seconds / (60 * 60) % 24); + int m = round(seconds % (60 * 60) / 60); + int s = round(seconds % 60); + + // Only seconds: + if (d == 0 && h == 0 && m == 0) { + return std::to_string(s) + "s"; + } + // Minutes and seconds: + else if (d == 0 && h == 0) { + return std::to_string(m) + "m" + std::to_string(s) + "s"; + } + // Hours and minutes: + else if (d == 0) { + return std::to_string(h) + "h" + std::to_string(m) + "m"; + } + // Days and hours: + else { + return std::to_string(d) + "d" + std::to_string(h) + "h"; + } + } +} diff --git a/src/utils/chrono.hpp b/src/utils/chrono.hpp new file mode 100644 index 0000000..5d0b3ed --- /dev/null +++ b/src/utils/chrono.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include + +namespace bot::utils::chrono { + std::string format_timestamp(int seconds); +} -- cgit v1.2.3