<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>js.Date.convertWeekNumberToFirstDate.html </title>
<meta name="generator" content="editplus" />
<meta name="author" content="yixianggao@126.com" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head>
<body>
<select id="sltYear"> </select>
<select id="sltWeek"> </select>
<span id="spnDate"></span>—<span id="lpnDate"></span>
<script type="text/javascript">
<!--
$ = document.getElementById;
var oYear = $("sltYear"); //从循环中获取年份
var oWeek = $("sltWeek"); //从循环中获取周数
var oDate = $("spnDate"); //周数对应的周一的日期
var lDate = $("lpnDate"); //周数对应的周五的日期
/*
*先获取当前年份,然后当年分小于2020年时,循环获取
*从2011年到2020年的一个数组
*/
for (var i=(new Date()).getFullYear(); 2000<= i <=2020; i++){
oYear.add(new Option(i+"年", i));
}
/*
*循环获取从第一周到第52周的一个数组
*/
for (var i=1; i <=52; i++) {
oWeek.add(new Option(i+"周", i));
}
/*
* sYear: string, 年份;
* sWeek: string, 周数;
* startFromFirstMonday: boolean, 是否从每年第一天开始计算周数,
* true: 从每年第一天开始计算周数;false: 从每年第一个周一开始计算周数。
*/
function convertWeekNumberToFirstDate(sYear, sWeek, startFromFirstMonday) {
if (startFromFirstMonday == undefined)
startFromFirstMonday = true;
var weekIndex = 1;
var year = parseInt(sYear);
var week = parseInt(sWeek);
var i = 1;
var dFirstDate = new Date(year, 0, i);
if (!startFromFirstMonday){
if (weekIndex < week){
weekIndex++;
}else
return dFirstDate;
}
if (dFirstDate.getDay() != 1){
i += 7 - dFirstDate.getDay() + 1;
dFirstDate.setFullYear(year, 0, i);
}
if (weekIndex < week){
i += 7*(week-weekIndex);
dFirstDate.setFullYear(year, 0, i);
}
return dFirstDate;
}
function displayDate() {
var dFirstDate = convertWeekNumberToFirstDate(oYear.value, oWeek.value);
oDate.innerHTML = dFirstDate.getFullYear()+"-"+(dFirstDate.getMonth()+1)+"-"+dFirstDate.getDate();
lDate.innerHTML = dFirstDate.getFullYear()+"-"+(dFirstDate.getMonth()+1)+"-"+(dFirstDate.getDate()+4);
}
displayDate();
oYear.onchange = oWeek.onchange = displayDate;
//-->
</script>
</body>
</html>
运行结果如图:
当选择年份和周数的时候,后面的日期段会随着对应变化
![](http://hi.csdn.net/attachment/201109/15/0_1316049782fsYH.gif)