2010-12-22 94 views
1

我有一个故事,其中某些事件在历年日期中反复发生,例如2011年,2005年,1994年一个可以互相 我希望能够找到历年替换这些日历的过去和未来识别一周中相同日期的年份(例如1994年,2005年,2011年)

如果有人可以帮助我,请我有没有编程能力提前

+0

除`年%100 == 0`外的闰年奇数,而`年%400!= 0`,循环每28年重复一次。所以你可以找出2000年到2027年的哪一年相匹配,然后开始改变28的倍数,直到你到达1900或2100年。 – Teepeemm 2014-08-24 02:32:57

回答

2

您只需比较一年中第一天所在的星期几,并分别比较闰年和非闰年(它们明显不同)。如果第一天是一样的,一年中的日子是一样的,那么全年的日子也一样。

有了这个减少,我们需要首先知道什么是闰年。从wikipedia算法是

if year modulo 400 is 0 
     then is_leap_year 
else if year modulo 100 is 0 
     then not_leap_year 
else if year modulo 4 is 0 
     then is_leap_year 
else 
     not_leap_year 

然后我们需要计算一年中的第一天。在我们开始之前,我们需要一个接地。我们从2000年开始,周六开始。每年我们都会前进,我们会在一周中的某一天前进,除非在闰年之后,我们会前进两天。

我们来看一个例子。 2000年星期六开始。 2001年是在2天后的星期一开始,因为2000年是闰年。 2002年星期二开始。 2003年的一个星期三。 2004年的一个星期四。 2005年的一个星期六,因为2004年是一个闰年。由此我们可以看到,2000年和2005年是在一周的同一天开始的,但一个是闰年,而另一个则不是。如果我们继续,我们会发现2011年的星期六开始,因此与2005年相同。

我们可以以类似的方式向后倒退找到过去的年份,或者我们可以选择较早的开始年份。

0

主日字母B:...... 1910 1921年1927年1938年1949年1955年1966年1977年1983年1994年2005年2011 2022 2033 2039 2050 2061 2067 2078 2089 2095 ...

+0

这些数字正是我期待的,但是我来找你们,希望得到一些东西我可以插入日期,直到我找到为故事工作的人 – 2010-12-23 01:39:54

0

要小心1752和1582在去之前,分别从日历中删除了11天和10天。请参阅dataandtime.com。否则,正好有14个可能的日历...一半与2月29日,一半没有。每一对日历从一周中的不同日开始。应该有一个excel电子表格(它很容易生成一个),将1752年以来的年数映射到14列中的一列。

0

2016年与1994年,2005年和2011年的一周中的同一天结束,但2016年开始于周五(闰年),而所有其他年份从周六开始,因此我们需要等到2022年2011再次比赛。

相关问题