如何使用cpp查找我的本地系统日期格式?

时间:2019-10-10 12:08:38

标签: c++

某些机构共享示例代码来使用cpp获取我的本地系统日期格式。例如,我需要获取系统日期格式是'dd-mm-yyyy'还是'mm-dd-yyyy'或'yyyy-mm-dd'

我只需要检查系统日期格式。不需要获取日期,月份和年份。请帮助我。

1 个答案:

答案 0 :(得分:2)

假设语言环境设置正确,您可以使用:

https://en.cppreference.com/w/cpp/locale/time_get/date_order

  

返回类型为std::time_base::dateorder的值,该值描述此语言环境使用的默认日期格式(由get_date()期望,由std::strftime()产生,格式说明符为'%x')。

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;
}
  

注意:此函数是可选的,在每种情况下都可能返回no_order。

很遗憾,I can only get it to print no_order。我不确定这是否与我在其上运行的编译器,语言环境或系统有关。 cppreference上的示例为我提供了no_order的所有信息,因此我猜测是编译器(我尝试过gcc和clang)尚未实现它。

可能有特定于系统的呼叫会给您您想要的东西。