Spec-Zone.ru › C++

std::time_get<CharT,InputIt>::date_order, std::time_get<CharT,InputIt>::do_date_order

Определён в заголовочном файле <locale>
public:
dateorder date_order() const;
(1)
protected:
virtual dateorder do_date_order() const;
(2)
1) Открытая функция-член вызывает защищённую виртуальную функцию-член do_date_order наиболее производного класса.
2) Возвращает значение типа std::time_base::dateorder, описывающее используемый по умолчанию формат даты для данной локали (ожидаемый функцией get_date() и создаваемый функцией std::strftime() со спецификатором формата '%x').

Допустимые значения (унаследованные от std::time_base):

no_order формат содержит переменные элементы (день недели, юлианский день и т. д.) или эта функция не реализована
dmy день, месяц, год (европейские локали)
mdy месяц, день, год (американские локали)
ymd год, месяц, день (азиатские локали)
ydm год, день, месяц (редкий вариант)

Возвращаемое значение

Значение типа dateorder.

Примечания

Эта функция является необязательной и в любом случае может возвращать no_order.

Пример

Приведённый ниже вывод получен с помощью clang (libc++).

#include <iostream>
#include <locale>

void show_date_order()
{
    std::time_base::dateorder d =
        std::use_facet<std::time_get<char>>(std::locale()).date_order();
    switch (d)
    {
        case std::time_base::no_order:
            std::cout << "no_order\n";
            break;
        case std::time_base::dmy:
            std::cout << "day, month, year\n";
            break;
        case std::time_base::mdy:
            std::cout << "month, day, year\n";
            break;
        case std::time_base::ymd:
            std::cout << "year, month, day\n";
            break;
        case std::time_base::ydm:
            std::cout << "year, day, month\n";
            break;
    }
}

int main()
{
    std::locale::global(std::locale("en_US.utf8"));
    std::cout << "In U.S. locale, the default date order is: ";
    show_date_order();

    std::locale::global(std::locale("ja_JP.utf8"));
    std::cout << "In Japanese locale, the default date order is: ";
    show_date_order();

    std::locale::global(std::locale("de_DE.utf8"));
    std::cout << "In German locale, the default date order is: ";
    show_date_order();
}

Возможный вывод:

In U.S. locale, the default date order is: month, day, year
In Japanese locale, the default date order is: year, month, day
In German locale, the default date order is: day, month, year

См. также

do_get_date
[виртуальная]
извлекает месяц, день и год из входного потока
(виртуальная защищённая функция-член)
time_base
определяет константы формата даты
(класс)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/locale/time_get/date_order

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API