如何在C中获得日期分隔符



我希望根据系统的格式设置获得日期分隔符。在Delphi我使用的是System.SysUtils.TFormatSettings.DateSeparator,是否有这样的东西在C?

C语言和标准库不提供任何此类信息。这些信息可以从您所瞄准的任何系统中获得。如何做到这一点取决于所针对的系统。

虽然其他答案表明C标准不提供此信息,但posix提供了。因此,在任何posix兼容的系统上,您都可以使用nl_langinfo api来获取区域设置信息。

您将不会获得日期分隔符,但是strftime可以使用的日期格式来显示该地区正确格式化的日期。如果你真的需要的话,你总是可以解析它来获得日期分隔符,但对于大多数情况,实际的日期格式可能更有用。

Posix对Windows的支持是不稳定的,所以你可能不得不区别对待它,但对于几乎任何其他平台,这应该有助于你。

C语言和标准库不提供这样的功能信息。这些信息可以从您使用的任何系统中获得目标。


感谢澄清,目标可以是linux和windows。在这种情况下,如何按照我的要求去做?

不同的操作系统需要不同的功能。

GetDataSeparator()
{
#ifdef _WIN32
    Here goes implementation for Windows
#else
    May be more preprocessor commands and implementations for Linux/Mac
#endif
}

不确定我是否理解正确。

对于Windows,您可以解析HKCUControl PanelInternational中找到的值。