如何确定哪一天是C中当前语言环境中的第一周

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)

Mic*_*rny 7

使用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.