struct EE::System::DateTimeLocale

Resolved locale information used by the date/time controls.

The standard library is used where it exposes the information. Fields that are not available portably use one centralized locale-name fallback instead of leaking locale assumptions into UI code.

#include <datetimeformat.hpp>

struct DateTimeLocale {
    // fields

    DateOrder dateOrder { DateOrder::DMY };
    char dateSeparator { '/' };
    HourCycle hourCycle { HourCycle::H24 };
    Uint8 firstDayOfWeek { 1 };
    std::string am { "AM" };
    std::string pm { "PM" };
    std::array<std::string, 7> shortWeekdayNames { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
    std::array<std::string, 7> weekdayNames { "Sunday",   "Monday", "Tuesday", "Wednesday",                                           "Thursday", "Friday", "Saturday" };
    std::array<std::string, 12> shortMonthNames { "Jan", "Feb", "Mar", "Apr", "May", "Jun",                                               "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
    std::array<std::string, 12> monthNames { "January",   "February", "March",    "April",                                           "May",       "June",     "July",     "August",                                          "September", "October",  "November", "December" };

    // methods

    std::string datePattern() const;
    std::string timePattern(bool showSeconds = false, bool showMilliseconds = false, HourCycle requestedCycle = HourCycle::Locale) const;
    std::string dateTimePattern(bool showSeconds = false, bool showMilliseconds = false, HourCycle requestedCycle = HourCycle::Locale) const;
    bool operator==(const DateTimeLocale&) const;
    static DateTimeLocale system();
    static DateTimeLocale fromLocaleName(std::string_view localeName);
};