我想在不同的语言环境中使用 C++ 打印时间戳,我在一个特定的主机上得到了 fr_FR 的奇怪输出。
这是代码,
#include <time.h> /* time_t, struct tm, time, localtime, strftime */
#include <stdlib.h>
#include <locale.h>
#include <clocale>
#include <iostream>
using namespace std;
int main()
{
time_t rawtime;
struct tm * timeinfo;
char buffer [32];
setlocale(LC_ALL, "");
cout << "LC_ALL: " << setlocale(LC_ALL, NULL) << endl;
cout << "LC_CTYPE: " << setlocale(LC_CTYPE, NULL) << endl;
time (&rawtime);
timeinfo = localtime (&rawtime);
strftime (buffer,sizeof(buffer),"%a %b %d %H:%M:%S %Y %Z",timeinfo);
puts (buffer);
return 0;
}
在运行上述程序之前,我做了
export LANG=fr_FR.ISO8859-1
它提供输出,
LC_ALL: fr_FR.ISO8859-1
LC_CTYPE: fr_FR.ISO8859-1
ven. avril 12 08:49:55 2013 UTC
它为 %b 和 %B 提供相同的输出,当我检查另一台机器时,它按预期工作。输出,
LC_ALL: fr_FR.ISO8859-1
LC_CTYPE: fr_FR.ISO8859-1
jeu avr 11 23:26:24 2013 PDT
在一台机器上,
$date +%b
avr
$date +%B
avril
在问题机器中,
$date +%b
avril
$date +%B
avril
请帮我解决这个问题。