判断今天属于这月的第几周,并展示这一周的日期(含自定义日期拼接显示)
生活随笔
收集整理的這篇文章主要介紹了
判断今天属于这月的第几周,并展示这一周的日期(含自定义日期拼接显示)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個可以用于簽到打卡
本周信息的展示
思路很簡單:
首先獲取這個月的1號是星期幾,如果就是星期一就很簡單這就是第一周的第一天然后向后面推算就可以計算出剩下的信息
如果是星期二需要向上一個月推算一天,就必須獲取這個月分知道上一個月有多少天,如果這個月是一月上一個月就是1-1=0就是十二月,然后分組31天一組30天一組然后就是二月你需要判斷這個二月有多少天
星期三,四。。。同理,然后判斷今天日期于這幾周的開始借宿比較推出是第幾周
【注意】在使月份的時候是從零開始的所以需要.getMonth()+1
代碼如下(全部使用原生js所以比較繁瑣且有許多可以優化的地方)
// 將信息顯示出來function getMonth(month) {switch (month) {case 1:month = "Jan";break;case 2:month = "Feb";break;case 3:month = "Mar";break;case 4:month = "Apr";break;case 5:month = "May";break;case 6:month = "Jun";break;case 7:month = "Jul";break;case 8:month = "Aug";break;case 9:month = "Sep";break;case 10:month = "Oct";break;case 11:month = "Nov";break;case 12:month = "Dec";break;}init = new Date(month + " 01 2018 00:00:00 GMT+0800 (中國標準時間)");}// 獲取這個月一號是星期幾//function getWeek(week) {if (week == "Mon") {week = 1;// //console.log(week);}if (week == "Tue") {week = 2;// //console.log(week);}if (week == "Wed") {week = 3;// //console.log(week);}if (week == "Thu") {week = 4;// //console.log(week);}if (week == "Fri") {week = 5;// //console.log(week);}if (week == "Sat") {week = 6;// //console.log(week);}if (week == "Sun") {week = 7;// //console.log(week);}return week;}function getNumWeek() {// getMonth(month);week = new String(init).slice(0, 3); //獲取星期幾// //console.log(week);week = getWeek(week);}getNumWeek();//console.log('week' + week);if (week == 1) {day = 1;}if (week == 2) {// 上個月最后一天if (month > 1) month = month - 1;if (month == 1) month = 12;// 29 另行判斷if (month == 2) day = 28;if (month == 1 ||month == 3 ||month == 5 ||month == 7 ||month == 8 ||month == 10 ||month == 12)day = "31";if (month == 4 || month == 6 || month == 9 || month == 11) day = 30;}if (week == 3) {// 上個月倒數第二天month = month - 1;if (month == 2) day = 27;if (month == 1 ||month == 3 ||month == 5 ||month == 7 ||month == 8 ||month == 10 ||month == 12)day = "30";if (month == 4 || month == 6 || month == 9 || month == 11) day = 29;}if (week == 4) {// 上個月倒數第三天month = month - 1;if (month == 2) day = 26;if (month == 1 ||month == 3 ||month == 5 ||month == 7 ||month == 8 ||month == 10 ||month == 12)day = "29";if (month == 4 || month == 6 || month == 9 || month == 11) day = 28;}if (week == 5) {// 上個月倒數第四天month = month - 1;if (month == 2) day = 25;if (month == 1 ||month == 3 ||month == 5 ||month == 7 ||month == 8 ||month == 10 ||month == 12)day = "28";if (month == 4 || month == 6 || month == 9 || month == 11) day = 27;}if (week == 6) {// 上個月倒數第五天month = month - 1;if (month == 2) day = 24;if (month == 1 ||month == 3 ||month == 5 ||month == 7 ||month == 8 ||month == 10 ||month == 12)day = "27";if (month == 4 || month == 6 || month == 9 || month == 11) day = 26;}if (week == 7) {// 上個月單數第六天month = month - 1;if (month == 2) day = 23;if (month == 1 ||month == 3 ||month == 5 ||month == 7 ||month == 8 ||month == 10 ||month == 12)day = "26";if (month == 4 || month == 6 || month == 9 || month == 11) day = 25;}var start = year + "-" + month + "-" + day;day = (2 * day) / 2;var oday;if (month == 1 ||month == 3 ||month == 5 ||month == 7 ||month == 8 ||month == 10 ||month == 12)oday = 31;if (month == 4 || month == 6 || month == 9 || month == 11) oday = 30;// oday = 29;if (month == 2) oday = 28;if (day >= oday - 5) month++;if (month > 12) month = 1;//console.log('oday:' + oday);if (day + 6 > oday) day = day - oday;//console.log('day:' + day);var end = year + "-" + month + "-" + (day + 6);week1 = { start: start, end: end };//console.log(week1);start = year + "-" + month + "-" + (day + 6 + 1);end = year + "-" + month + "-" + (day + 6 + 1 + 6);week2 = { start: start, end: end };start = year + "-" + month + "-" + (day + 6 * 2 + 1 * 2);end = year + "-" + month + "-" + (day + 6 * 2 + 1 * 2 + 6);week3 = { start: start, end: end };start = year + "-" + month + "-" + (day + 6 * 3 + 1 * 3);end = year + "-" + month + "-" + (day + 6 * 3 + 1 * 3 + 6);week4 = { start: start, end: end };//console.log(week4);start = year + "-" + month + "-" + (day + 6 * 4 + 1 * 4);// 最后一周的情況需要分析;oday = mGetDate(year, month);//console.log(oday);if (day + 6 * 4 + 1 * 4 + 6 - oday > 0) month++;if (day + 6 * 4 + 1 * 4 + 6 - oday > 0)end = year + "-" + month + "-" + (day + 6 * 4 + 1 * 4 + 6 - oday);if (day + 6 * 4 + 1 * 4 + 6 - oday <= 0)end = year + "-" + month + "-" + (day + 6 * 4 + 1 * 4 + 6);week5 = { start: start, end: end };count = 10;var _week1 = document.getElementById("week1");var _week2 = document.getElementById("week2");var _week3 = document.getElementById("week3");var _week4 = document.getElementById("week4");var _week5 = document.getElementById("week5");judge(date);sel();// }; function mGetDate(year, month) {var day = new Date(year, month, 0);return day.getDate(); } function dateConvert(dateParms) {// 對傳入的時間參數進行判斷if (dateParms instanceof Date) {var datetime = dateParms;}//判斷是否為字符串if (typeof dateParms == "string" && dateParms.constructor == String) {//將字符串日期轉換為日期格式var datetime = new Date(Date.parse(dateParms.replace(/-/g, "/")));}//獲取年月日時分秒var year = datetime.getFullYear();var month = datetime.getMonth() + 1;var date = datetime.getDate();var hour = datetime.getHours();var minutes = datetime.getMinutes();var second = datetime.getSeconds();//月,日小于10時,補0if (month < 10) {month = "0" + month;}if (date < 10) {date = "0" + date;}//拼接日期格var time = year + "-" + month + "-" + date;//返回處理結果return time; } function sel() {var select = document.getElementsByTagName("select")[0];var start = document.getElementById("start");var end = document.getElementById("end");// //console.log(select);// //console.log(week1 + 'week1:');// //console.log(count);if (select.value == "第一周") {start.value = dateConvert(week1.start);// week1.start;end.value = dateConvert(week1.end);}if (select.value == "第二周") {start.value = dateConvert(week2.start);end.value = dateConvert(week2.end);}if (select.value == "第三周") {start.value = dateConvert(week3.start);end.value = dateConvert(week3.end);}if (select.value == "第四周") {// alert(4);start.value = dateConvert(week4.start);end.value = dateConvert(week4.end);}if (select.value == "第五周") {// alert(5);start.value = dateConvert(week5.start);end.value = dateConvert(week5.end);} } var select; function judge(date) {// //console.log(week1);//console.log(date);select = document.getElementById("week");var start1 = new Date(week1.start);var start2 = new Date(week2.start);var start3 = new Date(week3.start);var start4 = new Date(week4.start);var start5 = new Date(week5.start);// //console.log(week1.start);if (date > start1) select.value = "第一周";if (date > start2) select.value = "第二周";if (date > start3) select.value = "第三周";if (date > start4) select.value = "第四周";if (date > start5) select.value = "第五周"; }同時里面有一個日期格式自行拼接的函數,代碼如下
function dateConvert(dateParms) {// 對傳入的時間參數進行判斷if (dateParms instanceof Date) {var datetime = dateParms;}//判斷是否為字符串if (typeof dateParms == "string" && dateParms.constructor == String) {//將字符串日期轉換為日期格式var datetime = new Date(Date.parse(dateParms.replace(/-/g, "/")));}//獲取年月日時分秒var year = datetime.getFullYear();//注意加一var month = datetime.getMonth() + 1;var date = datetime.getDate();var hour = datetime.getHours();// 可預留//是否需要分秒var minutes = datetime.getMinutes();var second = datetime.getSeconds();//是否需要補0//月,日小于10時,補0if (month < 10) {month = "0" + month;}if (date < 10) {date = "0" + date;}//拼接自己想要的日期格式var time = year + "-" + month + "-" + date;//返回處理結果return time; }代碼有很多冗余的地方,優化一下效果更好
總結
以上是生活随笔為你收集整理的判断今天属于这月的第几周,并展示这一周的日期(含自定义日期拼接显示)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《apue》 首次拜读完经典之作,两三记
- 下一篇: Redis(9)——史上最强【集群】入门