gpt4 book ai didi

c - GetDateFormat Win32函数的实现代码

转载 作者:行者123 更新时间:2023-11-30 16:04:33 26 4
gpt4 key购买 nike

我正在将一些遗留代码从 Windows 移植到 Linux(准确地说是 Ubuntu Karmic)。

我遇到了一个 Win32 函数 GetDateFormat()。

我需要移植的语句是这样调用的:

GetDateFormat(LOCALE_USER_DEFAULT, 0, &datetime, "MMMM", 'January', 31);

OR

GetDateFormat(LOCALE_USER_DEFAULT, 0, &datetime, "MMMM", 'May', 30);

其中 datetime 是 SYSTEMTIME 结构。

有谁知道我可以在哪里获取该函数的代码 - 或者如果失败的话,有关于如何“推出我自己的”等效函数的提示吗?

最佳答案

Linux 上相当于调用 GetDateFormat 的方法(实际上是纯 ANSI C),如下所示:

GetDateFormat(LOCALE_USER_DEFAULT, 0, &datetime, "MMMM", date_str, len);

是:

char *old_lc_time;

/* Set LC_TIME locale to user default */
old_lc_time = setlocale(LC_TIME, NULL);
setlocale(LC_TIME, "");

strftime(date_str, len, "%B", &datetime);

/* Set LC_TIME locale back */
setlocale(LC_TIME, old_lc_time);

(其中 datetime 现在是 struct tm 而不是 SYSTEMTIME)

您可能不需要担心每次设置区域设置并将其重新设置 - 如果您愿意所有日期/时间格式都在用户默认区域设置(即通常),那么您只需在程序启动时调用 setlocale(LC_TIME, ""); 一次即可完成。

但请注意,您的代码在 lpDateStrcchDate 参数中传递给 GetDateFormat 的值(分别是倒数第二个和最后一个) 没有有意义。 'January' 是一个字符常量,而它应该是一个指向缓冲区的指针,GetDateFormat 将在其中放置其结果。

关于c - GetDateFormat Win32函数的实现代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926070/

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