获取某一天是该年中的第多少周
判断某一天是该年中的第多少周,需要知道该年的第一天是星期几。
比如第一年第一天是星期一,那么直接获取那一天是该年中的第多少天,取它除以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} year6: */7: function isLeapYear(year) {8: return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);9: }10: /**11: * 获取某一年份的某一月份的天数12: *13: * @param {Number} year14: * @param {Number} month15: */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>
在线运行实例:
浙公网安备 33010602011771号