[英]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, "");
一旦在程序启动,并完成它。
但是请注意,代码在lpDateStr
和cchDate
参数中传递给GetDateFormat
的值(分别为倒数第二个和最后一个) 没有意义。 'January'
是一个字符常量,当它是一个指向缓冲区的指针时, GetDateFormat
将在该缓冲区中放置其结果。
Win32 GetDateFormat函数应等效于time.h标头中的strftime函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.