繁体   English   中英

WinDate函数GetDateFormat的实现代码

[英]Implementation code for GetDateFormat Win32 function

我正在将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将在该缓冲区中放置其结果。

Win32 GetDateFormat函数应等效于time.h标头中的strftime函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM