Mercurial > minori
view src/core/time.cpp @ 46:d0adc4aedfc8
*: update...
this commit:
1. consolidates dark theme stuff to dark_theme.cpp
2. creates a new widgets folder to store all of our
custom widgets
3. creates the list settings page in the information
dialog, although much of it is nonfunctional: it
doesn't save, and the status doesn't even get filled
in... we'll fix this later!
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Sat, 23 Sep 2023 01:02:15 -0400 |
parents | 5c0397762b53 |
children | fe719c109dbc |
line wrap: on
line source
#include "core/time.h" #include <cassert> #include <cmath> #include <cstdint> #include <ctime> #include <string> namespace Time { Duration::Duration(int64_t l) { length = l; } std::string Duration::AsRelativeString() { std::string result; auto get = [](int64_t val, const std::string& s, const std::string& p) { return std::to_string(val) + " " + (val == 1 ? s : p); }; if (InSeconds() < 60) result = get(InSeconds(), "second", "seconds"); else if (InMinutes() < 60) result = get(InMinutes(), "minute", "minutes"); else if (InHours() < 24) result = get(InHours(), "hour", "hours"); else if (InDays() < 28) result = get(InDays(), "day", "days"); else if (InDays() < 365) result = get(InDays() / 30, "month", "months"); else result = get(InDays() / 365, "year", "years"); if (length < 0) result = "In " + result; else result += " ago"; return result; } int64_t Duration::InSeconds() { return length; } int64_t Duration::InMinutes() { return std::llround((double)length / 60.0); } int64_t Duration::InHours() { return std::llround((double)length / 3600.0); } int64_t Duration::InDays() { return std::llround((double)length / 86400.0); } int64_t GetSystemTime() { assert(sizeof(int64_t) >= sizeof(time_t)); time_t t = std::time(nullptr); return *reinterpret_cast<int64_t*>(&t); } } // namespace Time