首页 > 解决方案 > 如何使用 cpp 查找我的本地系统日期格式?

问题描述

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

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

标签: c++

解决方案


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

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

返回 type 的值std::time_base::dateorder,它描述了此语言环境使用的默认日期格式(由with format specifier预期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。

不幸的是,我只能让它打印no_order。我不确定这是否是我运行它的编译器、语言环境或系统的问题。cppreference 上的示例为我no_order提供了所有内容,所以我的猜测是编译器(我尝试过 gcc 和 clang)还没有实现它。

可能有特定于系统的调用会给你你想要的。


推荐阅读