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) {
48 }
else if(curr_time.month() == save_time.month() && curr_time.index() == save_time.index()) {
58 }
else if(curr_time.year() == save_time.year()) {
62 format_string =
_(
"%b %d");
68 format_string =
_(
"%b %d %Y");
71 const auto now = std::chrono::system_clock::now();
73 auto as_time_t = std::chrono::system_clock::to_time_t(now);
74 const std::tm* timeptr = std::localtime(&as_time_t);
75 if(timeptr ==
nullptr) {
79 const std::tm current_time = *timeptr;
81 as_time_t = std::chrono::system_clock::to_time_t(
t);
82 timeptr = std::localtime(&as_time_t);
83 if(timeptr ==
nullptr) {
87 const std::tm save_time = *timeptr;
89 std::string format_string;
91 if(current_time.tm_year == save_time.tm_year) {
92 const int days_apart = current_time.tm_yday - save_time.tm_yday;
95 if(
prefs::get().use_twelve_hour_clock_format() ==
false) {
98 format_string =
_(
"%H:%M");
103 format_string =
_(
"%I:%M %p");
105 }
else if(days_apart > 0 && days_apart <= current_time.tm_wday) {
107 if(
prefs::get().use_twelve_hour_clock_format() ==
false) {
110 format_string =
_(
"%A, %H:%M");
115 format_string =
_(
"%A, %I:%M %p");
121 format_string =
_(
"%b %d");
127 format_string =
_(
"%b %d %Y");
131 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)