历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式(两个通用计算公式和一些分段计算公式),其中最著名的是蔡勒(Zeller)公式。即
w=(y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)/mod7
其中[]表示取整,mod表示取余,w,c,y,m,d分别表示星期,世纪,年,月,日,这里某年的1和2月要看成上一年的13,14月,年份用的是四位年份的后两位,前两位是世纪的值。
具体公示的推导过程参考这篇博客,写的很详细,这里实现他主要是为了熟悉方法
https://blog.csdn.net/Galaxy_Li/article/details/6753730
这个题目我做的是输入年份和月份直接输出当月的每一天对应的周几,而不是哪一天是周几,所以略微会有变化。
下面是我的实现:
public static int getdays(int year,int month)
{
int days=-1;
switch(month)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
days=31;break;
case 4:case 6:case 9:case 11:
days=30;break;
case 2://二月要判断年份是否为闰年
{
if(year%400==0||year%4==0&&year%100!=0)
{
days=29;
}