Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中查找下一个十年特定节日的星期几_Java_Date - Fatal编程技术网

在Java中查找下一个十年特定节日的星期几

在Java中查找下一个十年特定节日的星期几,java,date,Java,Date,我一直在与一个关于获取下一个十年中某个特定节日的每周天数的程序进行斗争,因此运行结果将显示接下来10年中每周的10天。我有编码,但不知道编码是如何工作的 这是书中的代码,我对它的日期时间算法特别困惑 公共类年检{ 公共静态void main(字符串[]args){ 整数[]日期=新整数[10]; 日期=J(2010年,4); M(2010年,日期); O(2010年,日期); } 公共静态整数[]J(整数年,整数日){ 整数[]日期=新整数[10]; 日期[0]=天; 对于(int i=1;i

我一直在与一个关于获取下一个十年中某个特定节日的每周天数的程序进行斗争,因此运行结果将显示接下来10年中每周的10天。我有编码,但不知道编码是如何工作的

这是书中的代码,我对它的日期时间算法特别困惑

公共类年检{
公共静态void main(字符串[]args){
整数[]日期=新整数[10];
日期=J(2010年,4);
M(2010年,日期);
O(2010年,日期);
}
公共静态整数[]J(整数年,整数日){
整数[]日期=新整数[10];
日期[0]=天;
对于(int i=1;i<10;i++){
如果(
((年份+i-1)%4==0)&&
((年份+i-1)%100)!=0
)
日期[i]=(日期[i-1]+366)%7;
其他的
日期[i]=(日期[i-1]+365)%7;
}
System.out.println(“一月:”);
对于(int i=0;i<10;i++)
System.out.println(日期[i]+1+“”);
返回日期;
}
}
下面的代码是为另外两个节日编写的,但我认为我们应该使用M(2010年,日期)来代替?因为日期包括年和日,但这里我们只需要日

M(2010, date);
O(2010, date);
提前感谢。

闰年 该代码正在进行调整

地球绕太阳的轨道(一年)和地球绕其轴线的自转(一天)不同步。因此,我们必须调整日期,以保持我们的每日日历正确。这一调整接近四分之一天,但并不完全如此。所以每四年我们会增加一天,除了几个世纪我们不会,除了我们经常做的事

算法 从维基百科的文章

if (year is not divisible by 4) then (it is a common year)
else
if (year is not divisible by 100) then (it is a leap year)
else
if (year is not divisible by 400) then (it is a common year)
else (it is a leap year)
使用日期时间库 我强烈建议您使用日期时间库,而不是滚动自己的代码。对于Java,这意味着Java 8中的e或Java.time包(受Joda time的启发,由JSR 310定义)


避免使用与java捆绑在一起的旧java.util.Date和.Calendar类,因为它们在设计和实现方面都存在缺陷,这是出了名的麻烦。

所以这是其他作者的代码,不是你的?你想了解日期时间的算法吗?你的问题的重点不清楚。正确,抱歉没有说得足够清楚。值得注意的是,你列出了三个副词,其中OP的代码只使用了两个。幸运的是,上一次需要这条规则是在古代历史上——2000年。除了一条说明代码不是海报的注释外。她或他从某处得到了密码。您捕获的错误说明了为什么应该使用受信任的日期时间库,而不是滚动自己的或获取一些代码!日期-时间工作令人惊讶地复杂、混乱且容易出错。