版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36336003/article/details/83657636
最近一个项目中需要用到日历功能,计算出给定日期(某个月的第一天
)是周几,这里用到了蔡勒公式,需要注意的问题:
问题一:
某年的1、2月计算时要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算
问题二:
注意使用蔡勒公式求和(未对7取余数前
)时,求出的和可能为负数
,因为负数不能按习惯的余数的概念求余数,这里我们加上7的倍数
直至为正数
后再对7取余数
// js中计算出某个月的第一天是周几
function(y, m, d){
// 求解cy年cm月cd日是星期几,parseInt代表取整
var cc = parseInt(y / 100);
var cy = y - cc * 100;
var cm = m;
var cd = 1;
// 某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算
if(m == 1 || m == 2){
cc = parseInt((y-1) / 100);
cy = y-1 - cc * 100;
cm = 12 + m;
}
// 注意使用蔡勒公式时出现负数情况
while(csum < 0){
csum = csum + 7;
}
var fd = parseInt(csum % 7);
return fd;
}
代码中变量解释:
y
代表年
m
代表月
d
代表日
cc
代表世纪-1
cy
代表年(后两位数)
cm
代表月(范围在3-14之间,包括3和14)
cd
代表日
fd
代表周几