24 #ifndef CPP20_CHRONO_SUPPORT
32 #ifdef CPP20_CHRONO_SUPPORT
33 const auto now = std::chrono::system_clock::now();
34 std::string format_string;
36 auto curr_time = std::chrono::year_month_weekday{std::chrono::floor<std::chrono::days>(now)};
37 auto save_time = std::chrono::year_month_weekday{std::chrono::floor<std::chrono::days>(
t)};
39 if(curr_time == save_time) {
49 }
else if(curr_time.month() == save_time.month() && curr_time.index() == save_time.index()) {
59 }
else if(curr_time.year() == save_time.year()) {
63 format_string =
_(
"%b %d");
69 format_string =
_(
"%b %d %Y");
72 const auto now = std::chrono::system_clock::now();
74 auto as_time_t = std::chrono::system_clock::to_time_t(now);
75 std::tm current_time{};
80 as_time_t = std::chrono::system_clock::to_time_t(
t);
86 std::string format_string;
88 if(current_time.tm_year == save_time.tm_year) {
89 const int days_apart = current_time.tm_yday - save_time.tm_yday;
92 if(
prefs::get().use_twelve_hour_clock_format() ==
false) {
95 format_string =
_(
"%H:%M");
100 format_string =
_(
"%I:%M %p");
102 }
else if(days_apart > 0 && days_apart <= current_time.tm_wday) {
104 if(
prefs::get().use_twelve_hour_clock_format() ==
false) {
107 format_string =
_(
"%A, %H:%M");
112 format_string =
_(
"%A, %I:%M %p");
118 format_string =
_(
"%b %d");
124 format_string =
_(
"%b %d %Y");
128 assert(!format_string.empty());
bool use_twelve_hour_clock_format()
static std::string _(const char *str)
auto get_local_timestamp(const std::chrono::system_clock::time_point &time)
std::string translate_timestamp(time_t time, std::string_view format)
Translates the passed timestamp and returns it in the requested format.
std::string format_time_summary(const std::chrono::system_clock::time_point &t)
std::tm * localtime_r(const std::time_t *time, std::tm *result)