Эквивалент Linux (на самом деле, обычный ANSI C) для вызова GetDateFormat
, например:
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, "");
один раз при запуске программы и покончить с этим.
Обратите внимание, что значения, которые ваш код передает GetDateFormat
в параметрах lpDateStr
и cchDate
(второй-последний и последний соответственно), имеют смысл , а не . 'January'
является символьной константой, когда она должна быть указателем на буфер, где GetDateFormat
будет помещать свой результат.