gpt4 book ai didi

c - 生成特定于语言环境的短日期

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:37 25 4
gpt4 key购买 nike

strftime C 函数在 glibc 下使用并与 is_IS 语言环境结合使用时,strftime %x 格式说明符会生成类似“þri”的字符串31.des 2013”​​,换句话说,它无偿地包括工作日并将月份写为单词/缩写词。还有其他地区表现出这种行为。

在我看来,strftime 没有为用户提供任何东西来请求特定于语言环境的“短日期”,其中仅使用数字和分隔符。因此,看起来我需要在我自己的程序中保留一个包含语言环境和短日期格式的本地数据库,例如将 is_IS 映射到“%d.%m.%Y”。是否有任何其他选项需要考虑? libicu/ICU4C?

最佳答案

我重现了你的结果:

#include <stdio.h>
#include <time.h>
#include <locale.h>

int
main(void)
{
char time_buf[128];
time_t t;
struct tm *tmp;

t = time(NULL);
tmp = localtime(&t);
setlocale(LC_TIME, "is_IS");
strftime(time_buf, sizeof(time_buf), "%x", tmp);
printf("time: `%s'\n", time_buf);

return 0;
}

对我来说,这可能是一个应该报告给 glibc 维护者的错误(或者至少是更改其当前行为的请求)。我不知道对于您实际从特定于语言环境的 strftime 格式中获得的内容有什么保证。我期望更像“C”区域设置的 %m/%d/%y 输出 %x。 “de_DE”语言环境似乎提供了类似这样的东西。

关于c - 生成特定于语言环境的短日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com