约定:星期一是一周的开始。
其中的计算结果以如下网站为准。
参考:https://wannianli.tianqi.com/...
//给定的日期是第本年中的第几天
function getDayIndexInYear(t){
var y, m, d;
var total = 0;
var arr = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
y = t.getFullYear()
m= t.getMonth() + 1
d = t.getDate()
for (var i = 0; i < m - 1; i++) {
total = total + arr[i];
}
if ((y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) && m > 2) {
total = total + d + 1
} else {
total = total + d
}
return total;
}
//给定的日期是今年的第几周
function getWeekIndexInYear(t) {
var date1 = getDayIndexInYear(t); //给定的日期是本年的第几天
var _t = new Date(); //复制对象,以免修改覆盖。
_t.setYear(t.getFullYear())
_t.setMonth(t.getMonth())
_t.setDate(t.getDate())
_t.setMonth(0)
_t.setDate(1)
var d = _t.getDay(); //1. 得到今年的1月1号是星期几。
var fisrtWeekned = d;
if(d == 0) {
fisrtWeekned = 1;//1号就是星期天,第一周的周未是1号
}
else{
fisrtWeekned = 7 - d + 1; //第一周的周未是几号
}
if(date1 <= fisrtWeekned){
return 1
}
else {
return 1 + Math.ceil( (date1 - fisrtWeekned)/7 )
}
}
/***
* 计算今天是本月的第几周
* @param t
* @returns {number}
*/
function getWeekIndexInMonth (t) {
if(t == undefined ){
t = new Date();
}
else if(t instanceof Date) {
var _t = new Date();
_t.setYear(t.getFullYear())
_t.setMonth(t.getMonth())
_t.setDate(t.getDate())
var date1 = _t.getDate(); //给定的日期是几号
_t.setDate(1)
var d = _t.getDay(); //1. 得到当前的1号是星期几。
var fisrtWeekend = d;
if(d == 0) {
fisrtWeekend = 1;
//1号就是星期天
}
else{
fisrtWeekend = 7 - d + 1; //第一周的周未是几号
}
if(date1 <= fisrtWeekend){
return 1
}
else {
return 1 + Math.ceil( (date1 - fisrtWeekend)/7 )
}
}
else{
throw 'getFormatDate - error : 你的参数不是日期类型,也不是为空';
}
}
//测试
console.info(getWeekIndexInYear(new Date('2017-12-30'))
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。