23 #ifndef CPP20_CHRONO_SUPPORT
31 #ifdef CPP20_CHRONO_SUPPORT
32 const auto now = std::chrono::system_clock::now();
33 std::string format_string;
35 auto curr_time = std::chrono::year_month_weekday{std::chrono::floor<std::chrono::days>(now)};
36 auto save_time = std::chrono::year_month_weekday{std::chrono::floor<std::chrono::days>(
t)};
38 if(curr_time == save_time) {
46 }
else if(curr_time.month() == save_time.month() && curr_time.index() == save_time.index()) {
54 }
else if(curr_time.year() == save_time.year()) {
57 format_string =
_(
"%b %d");
62 format_string =
_(
"%b %d %Y");
65 const auto now = std::chrono::system_clock::now();
67 auto as_time_t = std::chrono::system_clock::to_time_t(now);
68 const std::tm* timeptr = std::localtime(&as_time_t);
69 if(timeptr ==
nullptr) {
73 const std::tm current_time = *timeptr;
75 as_time_t = std::chrono::system_clock::to_time_t(
t);
76 timeptr = std::localtime(&as_time_t);
77 if(timeptr ==
nullptr) {
81 const std::tm save_time = *timeptr;
83 std::string format_string;
85 if(current_time.tm_year == save_time.tm_year) {
86 const int days_apart = current_time.tm_yday - save_time.tm_yday;
89 if(
prefs::get().use_twelve_hour_clock_format() ==
false) {
91 format_string =
_(
"%H:%M");
95 format_string =
_(
"%I:%M %p");
97 }
else if(days_apart > 0 && days_apart <= current_time.tm_wday) {
99 if(
prefs::get().use_twelve_hour_clock_format() ==
false) {
101 format_string =
_(
"%A, %H:%M");
105 format_string =
_(
"%A, %I:%M %p");
110 format_string =
_(
"%b %d");
115 format_string =
_(
"%b %d %Y");
119 assert(!format_string.empty());
bool use_twelve_hour_clock_format()
static std::string _(const char *str)
auto format_local_timestamp(const std::chrono::system_clock::time_point &time, std::string_view format="%F %T")
std::string format_time_summary(const std::chrono::system_clock::time_point &t)