JS獲取今天是本月第幾周、本月共幾周、本月有多少天、是今年的第幾周、是今年的第幾天的示例代碼
好久沒有記錄工作中遇到的問題,其中的原因之一應(yīng)該是沒有什么代表性的或者說是沒有網(wǎng)上搜不到答案的,畢竟在大多數(shù)前端中我還是很渺小。今天寫這個博客就是因為工作中遇到了問題而且網(wǎng)上也沒有找到合適的答案,自己寫了大部分代碼加上借鑒了一些別人的思想,下面就步入正題:
—更新:2018-6-20 加上今天是不是周日的判斷
—更新:2018-7-31 給String添加方法來實(shí)現(xiàn)調(diào)用,感謝Rainbow_miao的提醒。github地址:https://github.com/zancheng/weekCalculation
JS源碼
判斷規(guī)則
第一周 : 是這個月的新一周,且不在上個月最后一周內(nèi)。
// 獲取某年某月的有多少周
String.prototype.weekInMonthCount = function () {
var date = new Date((new Date(this).setDate(1)) || (new Date()).setDate(1));
var firstWeekDate = 1;// 默認(rèn)第一周是本月1號 為了模擬本月1號是否為本月第1周的判斷
if (date.getDay() === 1) { // 判斷1號是周一
firstWeekDatek = 1;
} else if (date.getDay() === 0) { // 判斷1號是周日
firstWeekDate = 8 - 7 + 1;
} else { // 判斷1號是周二至周六之間
firstWeekDate = 8 - date.getDay() + 1;
}
date.setMonth(date.getMonth()+1);
date.setDate(0);
var monthHasDays = date.getDate();// 本月天數(shù)
monthHasDays = date.getDate() - firstWeekDate + 1;
var hasWeek = Math.ceil(monthHasDays/7); // 計算本月有幾周
return hasWeek;
};
// 獲取今天是今年的第幾周
String.prototype.weekIndexInYear = function () {
var nowDate = new Date(this != '' ? this : new Date());
var initTime = new Date(this != '' ? this : new Date());
initTime.setMonth(0); // 本年初始月份
initTime.setDate(1); // 本年初始時間
var differenceVal = nowDate - initTime ; // 今天的時間減去本年開始時間,獲得相差的時間
var todayYear = Math.ceil(differenceVal/(24*60*60*1000)); // 獲取今天是今年第幾天
var index = Math.ceil(todayYear/7); // 獲取今天是今年第幾周
return index;
};
// 獲取今天是今年的第幾天
String.prototype.dateIndexInYear = function () {
var nowDate = new Date(this != '' ? this : new Date());
var initTime = new Date(this != '' ? this : new Date());
initTime.setMonth(0); // 本年初始月份
initTime.setDate(1); // 本年初始時間
var differenceVal = nowDate - initTime ; // 今天的時間減去本年開始時間,獲得相差的時間
return Math.ceil(differenceVal/(24*60*60*1000));
};
// 獲取今天是第幾周
String.prototype.weekIndexInMonth = function () {
var date = new Date(this.trim() != '' ? this : new Date());
var dateStart = new Date((new Date(this.trim() != '' ? this : new Date()).setDate(1))); // 本月初
var firstWeek = 1;
if (dateStart.getDay() === 1) {
firstWeek = 1;
} else if (dateStart.getDay() === 0) {
firstWeek = 8 - 7 + 1;
} else {
firstWeek = 8 - dateStart.getDay() + 1;
}
var weekIndex = 1;
var c = date.getDate();
if (date.getDay() === 1 && date.getDate() < 7) {
weekIndex = 1;
} else if (c < firstWeek ) {
weekIndex = -1;
} else {
if (c < 7) {
weekIndex = Math.ceil(c/7);
} else {
c = c - firstWeek + 1;
if (c%7 === 0) {
if (dateStart.getDay() !== 6) {
weekIndex = c/7;
} else {
weekIndex = c/7 + 1;
}
} else {
weekIndex = Math.ceil(c/7);
}
}
}
return weekIndex;
};
方法說明及調(diào)用示例
String.prototype.dateIndexInYear
獲取這一天屬于今年的第多少天
默認(rèn)時間是今天,調(diào)用方法示例:
'2018/10/1'.dateIndexInYear()
返回: 273
String.prototype.weekIndexInYear
獲取這一天屬于今年的第多少周
默認(rèn)時間是今天,調(diào)用方法示例:
'2018-10-1'.weekIndexInYear()
返回: 39
String.prototype.weekInMonthCount
獲取這一年的這一月的有多少周
默認(rèn)時間是今天,調(diào)用方法示例:
'2018-10-1'.weekInMonthCount()
返回: 5
String.prototype.weekIndexInMonth
獲取這一周屬于本月第多少周
如果屬于上個月,返回 -1
默認(rèn)時間是今天,調(diào)用方法示例:
'2018-10-01'.weekIndexInMonth()
返回: 1
總結(jié)
以上所述是小編給大家介紹的JS獲取今天是本月第幾周、本月共幾周、本月有多少天、是今年的第幾周、是今年的第幾天,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
JS實(shí)現(xiàn)的網(wǎng)頁倒計時數(shù)字時鐘效果
這篇文章主要介紹了JS實(shí)現(xiàn)的網(wǎng)頁倒計時數(shù)字時鐘效果,是一款非常實(shí)用的javascript倒計時特效,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
JavaScript之json_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了JavaScript之json,JSON它是一種數(shù)據(jù)交換格式。有興趣的可以了解一下2017-06-06
JavaScript實(shí)現(xiàn)帶有子菜單和控件的slider輪播圖效果
本文通過實(shí)例代碼給大家介紹了基于js實(shí)現(xiàn)帶有子菜單和控件的slider輪播圖效果,本文附有圖片和示例代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-11-11
javascript使用location.search的示例
本文介紹javascript 使用location.search獲取當(dāng)前地址欄參數(shù)的實(shí)例2013-11-11
javascript數(shù)組的定義及操作實(shí)例
在文章里小編給大家整理的是關(guān)于javascript數(shù)組的定義及操作的相關(guān)知識點(diǎn),需要的朋友們學(xué)習(xí)下。2019-11-11
JavaScript實(shí)現(xiàn)彩虹文字效果的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)彩虹文字效果的方法,涉及javascript操作文字樣式的技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-04-04

