Kor*_*oly 2 c time locale date
如何确定哪一天是C中当前语言环境中的第一周.在俄罗斯星期一是第一天,但我的mac显示错误的第一天的本地化日历.所以我想知道我是否可以确定哪一天是当前语言环境中的第一天.谢谢.
anatoly@mb:/Users/anatoly$ cal
???? 2012
?? ?? ?? ?? ?? ?? ??
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Run Code Online (Sandbox Code Playgroud)
使用glibc,您可以:
#define _GNU_SOURCE
#include <langinfo.h>
char get_first_weekday()
{
return *nl_langinfo(_NL_TIME_FIRST_WEEKDAY);
}
Run Code Online (Sandbox Code Playgroud)
记得先打个电话setlocale().例:
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "");
printf("%d\n", get_first_weekday());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这会2在我的系统上返回(这意味着星期一== DAY_2).
请注意:我不认为它是glibc的公共API.但是,这就是locale工具捆绑的工具在工作日的第一天.cal也使用类似的方法.
根据具体用途,您可能也会感兴趣_NL_TIME_FIRST_WORKDAY.