首页 > 解决方案 > 如何从 C/C++ 中的当前语言环境获取短日期格式字符串?

问题描述

以下代码(Windows、C++)设置当前语言环境并检索格式化的短日期字符串,该字符串根据语言环境的短日期格式“%c”进行格式化。

  time_t rawtime;
  struct tm * timeinfo;
  char buffer [80];

  time (&rawtime);
  timeinfo = localtime (&rawtime);

  strftime (buffer,80,"%c",timeinfo);

假设这给出了给定日期和语言环境的“31/01/2012”。这对应于“%d/%m/%Y”的日期格式,尽管已指定“%c”。

有没有办法我可以获取格式字符串本身,即给定语言环境的“%d/%m/%Y”?

标签: cwindowsdate

解决方案


langinfo 中有一个调用来执行此操作

作为一个简单的演示

#include <stdio.h>
#include <langinfo.h>

int main()
{
    printf("%s\n", nl_langinfo( D_FMT ) );
}

如果您的 C 编译器不兼容 POSIX,并且我认为 Windows 应该是,那么这个问题的答案可能更像是一个指南

获得保证具有完整(4 位)年份编号的 LOCALE_SSHORTDATE 的正确方法是什么?


推荐阅读