从一年开始的一周开始于

Mar*_*rio 0 c++ date

我正在用C++编写一个函数来获取一天中的日期,给出日期,月份和年份(从1900年开始).我必须这样做(我遵循命令,这是一个练习)是通过总天数的模数7.

例如,2018年11月21日将是该年的第325天(考虑到闰年).一周的日期将是325%7,这将给出0到6之间的数字,0表示星期日,1表示星期一,依此类推,直到6星期六.

但这只会在周一开始的几年内有效.2018年开始工作,但2019年将在周二开始休息1天.

我解决这个问题的想法是知道那一年的哪一天开始并将其添加到给定的0-6数字(如果它高于6则修复它),但我必须使用前一年的功能,这将是这样做直到它达到1900,这将设置为星期一.这听起来很糟糕,我无法想出另一种方法.

提前致谢

kks*_*199 6

如果您不想使用任何库并且纯粹通过计算来完成,那么这是一个解决方案.

http://mathforum.org/dr.math/faq/faq.calendar.html

或者简单的解释视频.

您可以做的是将此逻辑转换为您的程序,并找出一周中的哪一天.

int dayofweek(int d, int m, int y) 
{ 
    static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }; 
    y -= m < 3; 
    return ( y + y/4 - y/100 + y/400 + t[m-1] + d) % 7; 
} 
Run Code Online (Sandbox Code Playgroud)

代码来源.