判断某一天是该年中的第多少周,需要知道该年的第一天是星期几。
比如第一年第一天是星期一,那么直接获取那一天是该年中的第多少天,取它除以7的上限;
如果不是星期一,则需要进行如下计算:
一周是7天,减去那一天星期几,则该礼拜还有 7 – n天结束,再加一天则是下一礼拜。
示例代码:
1: //那一年第一天是星期几
2: var yearFirstDay = new Date(year, 0, 1).getDay() || 7;
3:
4: var week = null;
5: if (yearFirstDay == 1) {
6: week = Math.ceil(days/yearFirstDay);
7: } else {
8: days -= (7 - yearFirstDay + 1);
9: week = Math.ceil(days/7) + 1;
10: days = Math.max(days, 1);
11: }
完整demo代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>判定某一天在该年份中是第几周</title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv='content-type' content='text/html;charset=utf-8'>
</head>
<body>
<script type="text/javascript"> 1: 2: /** 3: * 判断年份是否为润年 4: * 5: * @param {Number} year 6: */ 7: function isLeapYear(year) { 8: return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); 9: } 10: /** 11: * 获取某一年份的某一月份的天数 12: * 13: * @param {Number} year 14: * @param {Number} month 15: */ 16: function getMonthDays(year, month) { 17: return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (isLeapYear(year) ? 29 : 28); 18: } 19: 20: 21: function clickHandler() { 22: var y = $('year').value, 23: m = $('month').value, 24: d = $('day').value; 25: 26: var now = new Date(y, m - 1, d), 27: year = now.getFullYear(), 28: month = now.getMonth(), 29: days = now.getDate(); 30: 31: //那一天是那一年中的第多少天 32: for (var i = 0; i < month; i++) { 33: days += getMonthDays(year, i); 34: } 35: 36: //那一年第一天是星期几 37: var yearFirstDay = new Date(year, 0, 1).getDay() || 7; 38: 39: var week = null; 40: if (yearFirstDay == 1) { 41: week = Math.ceil(days/yearFirstDay); 42: } else { 43: days -= (7 - yearFirstDay + 1); 44: week = Math.ceil(days/7) + 1; 45: 46: days = Math.max(days, 1); 47: } 48: 49: alert(y + "年" + m + "月" + d + "日是" + year + "年的\n\n第" + days + "天\t第" + week + "周"); 50: }</script> 1: 2: 3: 选择日期: 4: <select id="year"></select><label for="year">年</label> 5: <select id="month"></select><label for="month">月</label> 6: <select id="day"></select><label for="day">日</label> 7: 8: <button style='margin-left:30px;'>开始计算</button> 9: 10: <script type="text/javascript"> 11: function $(id) { 12: return typeof id === 'string' ? document.getElementById(id) : id; 13: } 14: 15: function addOptions(id, start, end) { 16: var opt = null, 17: frag = document.createDocumentFragment(); 18: 19: for (var i = start; i <= end ; i++) { 20: opt = document.createElement("option"); 21: opt.value = i; 22: opt.innerHTML = i; 23: frag.appendChild(opt); 24: } 25: 26: $(id).appendChild(frag); 27: } 28: 29: function setDays(y, m) { 30: addOptions('day', 1, getMonthDays(y, m - 1)); 31: } 32: 33: function changeDays() { 34: var val = $('day').value; 35: 36: $('day').options.length = 0; 37: 38: var y = $('year').value, 39: m = $('month').value; 40: 41: setDays(y, m); 42: 43: if (val) { 44: var maxDay = getMonthDays(y, m - 1); 45: 46: $('day').value = (val > maxDay) ? maxDay : val; 47: } 48: } 49: 50: addOptions('year', 1970, 2050); 51: addOptions('month', 1, 12); 52: changeDays(); 53: 54: //默认设置为本地时间 55: !(function() { 56: var now = new Date(); 57: $('year').value = now.getFullYear(); 58: $('month').value = now.getMonth() + 1; 59: $('day').value = now.getDate(); 60: })(); 61: 62: $('year').onchange = changeDays; 63: $('month').onchange = changeDays; 64: 65: document.getElementsByTagName("button")[0].onclick = clickHandler;</script>
</body>
</html>
在线运行实例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>判定某一天在该年份中是第几周</title> </head> <body> 选择日期: <select id="year"></select><label for="year">年</label> <select id="month"></select><label for="month">月</label> <select id="day"></select><label for="day">日</label> <button style='margin-left:30px;'>开始计算</button> </body> </html> 预览代码