我是一个小型的应用程序,甚至或不返回。
time_t now = time(0);
tm *ltm = localtime(&now);
int twin=(ltm->tm_yday/7)%2
但独立于一年的第一天,所以它返回
周一,周四,我们等 0,1,1,1,1,1,1答案 0 :(得分:1)
您假设第一周恰好有7天不正确。
例如2013年1月1日是星期二,所以第一周只有5天。
使用strftime怎么样?类似的东西:
time_t now = time(0);
tm *ltm = localtime(&now);
char weekNr[3];
strftime(weekNr, sizeof(weekNr), "%W", ltm);
int isOdd = atoi(weeknr) % 2;
答案 1 :(得分:0)
你所谓的 twin ,用英语通常称为甚至。
关于你的问题,这里的问题是你没有正确计算周数:你只是除以7,这还不够,因为年初和周开始每年都不同。
此外,有几种不同的方法可以决定哪一个是第1周。例如,参见this code,开始使用。
更新:从eglibc源代码中无耻地复制:
1)当前年份的周数作为十进制数,范围00到53,从第一个星期日开始,作为第01周的第一天(strftime("%U")
):
tp->tm_yday - tp->tm_wday + 7) / 7
2)当前年份的周数作为十进制数,范围00到53,从第一个星期一开始,作为第01周的第一天(strftime("%W")
):
(tp->tm_yday - (tp->tm_wday - 1 + 7) % 7 + 7) / 7
3)当前年份的ISO 8601周数(见注释)为十进制数,范围为01到53,其中第1周是新年至少有4天的第一周({{1} }):
这很复杂......所以你对@MaikuMori使用strftime("%V")
“%V”strftime``, but with
atoi()`的想法更好。