dateorder date_order() const; // (1) C++98
概要
日付の要素(日・月・年)の並び順を取得する。
戻り値
例
#include <iostream>
#include <locale>
#include <stdexcept>
const char* to_string(std::time_base::dateorder order)
{
switch (order) {
case std::time_base::no_order: return "no_order";
case std::time_base::dmy: return "dmy";
case std::time_base::mdy: return "mdy";
case std::time_base::ymd: return "ymd";
case std::time_base::ydm: return "ydm";
}
return "";
}
int main()
{
for (const char* name : {"C", "en_US.UTF-8", "ja_JP.UTF-8", "de_DE.UTF-8"}) {
try {
std::locale loc{name};
const auto& facet = std::use_facet<std::time_get<char>>(loc);
std::cout << name << " : " << to_string(facet.date_order()) << std::endl;
}
catch (const std::runtime_error&) {
// 指定した名前のロケールが利用できない場合
std::cout << name << " : not available" << std::endl;
}
}
}
出力例
C : mdy
en_US.UTF-8 : mdy
ja_JP.UTF-8 : ymd
de_DE.UTF-8 : dmy
- 米国では月・日・年、日本では年・月・日、ドイツでは日・月・年の順である。この順序は
get_date()が解析する書式を決める - 日付書式が日・月・年以外の可変要素(週番号や曜日など)を含む場合は
no_orderが返る。"C"ロケールに対して何を返すかは処理系によって異なる - 妥当なロケール名は処理系定義である。指定した名前のロケールが利用できない場合、
std::localeのコンストラクタはstd::runtime_errorを送出し、上記の例ではnot availableが出力される
バージョン
言語
- C++98