【问题标题】:How to find my local system date format using cpp? [closed]如何使用 cpp 查找我的本地系统日期格式? [关闭]
【发布时间】:2019-10-10 12:08:38
【问题描述】:

一些正文共享示例代码,以使用 cpp 获取我的本地系统日期格式。例如我需要获取系统日期格式是'dd-mm-yyyy'还是'mm-dd-yyyy'还是'yyyy-mm-dd'

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

【问题讨论】:

标签: c++


【解决方案1】:

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

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)还没有实现它。

可能会有特定于系统的调用可以满足您的需求。

【讨论】:

  • date_order() 是可选的;特别允许它总是返回no_order :-(
  • 您的代码在 macOS 上为我打印“月、日、年”。
猜你喜欢
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多