<SCRIPT LANGUAGE="JavaScript">
<!--
Date.prototype.getWeek = function(flag)
{
  var first = new Date(this.getFullYear(), 0, 1);
  var n = parseInt("1065432".charAt(first.getDay()));
  n = this.getTime()-first.getTime()-n*24*60*60*1000;
  n = Math.ceil(n/(7*24*60*60*1000));
  return (flag==true&&first.getDay()!=1)?(n+1):n;
};
Date.prototype.format = function(format)
{
  var o = {
    "M+" : this.getMonth()+1, //month
    "d+" : this.getDate(),    //day
    "h+" : this.getHours(),   //hour
    "m+" : this.getMinutes(), //minute
    "s+" : this.getSeconds(), //second
    "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
    "S" : this.getMilliseconds() //millisecond
  }
  if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
    (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  for(var k in o)if(new RegExp("("+ k +")").test(format))
    format = format.replace(RegExp.$1,
      RegExp.$1.length==1 ? o[k] : 
        ("00"+ o[k]).substr((""+ o[k]).length));
  return format;
};function getFirstAndEnd(d)
{
  var w = d.getDay(), n = 24*60*60*1000;
  var first = new Date(d.getTime() - parseInt("6012345".charAt(w))*n);
  var end = new Date(d.getTime() + parseInt("0654321".charAt(w))*n);
  return {first: first, end: end};
}var s = "2005-08-08";
var n = Date.parse(s.replace(/-/g, "/"));
if(!n) alert("date string is wrong!");
else
{
    var d = new Date(n);
    alert(s +" 是这一年里的第 "+ d.getWeek() +" 周!起始点为本年的第一个周一!");
    alert(s +" 是这一年里的第 "+ d.getWeek(true) +" 周!起始点为本年第一周里的周一!");
    var firstAndEnd = getFirstAndEnd(d);
    alert(firstAndEnd.first.format("yyyy-MM-dd"));
    alert(firstAndEnd.end.format("yyyy-MM-dd"));
}
//-->
</SCRIPT>

解决方案 »

  1.   

    多多给分吧,呵呵!<input onblur="mm(this)" value="2005-08-08"><br>
    系本年的第 <input id="week1"> 周(从本年的第一个星期一开始起算)<br>
    系本年的第 <input id="week2"> 周(从本年的第一周的星期一开始起算)<br>
    本周起始日期<input id="weekStart"><br>
    本周结束日期<input id="weekEnd">
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function mm(input)
    {
        var n = Date.parse(input.value.replace(/-/g, "/"));
        if(isNaN(n)) {alert("Date string is wrong!"); return;}
        var d = new Date(n);
        document.getElementById("week1").value = d.getWeek();
        document.getElementById("week2").value = d.getWeek(true);
        var fe = getFirstAndEnd(d);
        document.getElementById("weekStart").value = fe.first.format("yyyy-MM-dd");
        document.getElementById("weekEnd").value = fe.end.format("yyyy-MM-dd");
    }
    Date.prototype.getWeek = function(flag)
    {
      var first = new Date(this.getFullYear(), 0, 1);
      var n = parseInt("1065432".charAt(first.getDay()));
      n = this.getTime()-first.getTime()-n*24*60*60*1000;
      n = Math.ceil(n/(7*24*60*60*1000));
      return (flag==true&&first.getDay()!=1)?(n+1):n;
    };
    Date.prototype.format = function(format)
    {
      var o = {
        "M+" : this.getMonth()+1, //month
        "d+" : this.getDate(),    //day
        "h+" : this.getHours(),   //hour
        "m+" : this.getMinutes(), //minute
        "s+" : this.getSeconds(), //second
        "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
        "S" : this.getMilliseconds() //millisecond
      }
      if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
        (this.getFullYear()+"").substr(4 - RegExp.$1.length));
      for(var k in o)if(new RegExp("("+ k +")").test(format))
        format = format.replace(RegExp.$1,
          RegExp.$1.length==1 ? o[k] : 
            ("00"+ o[k]).substr((""+ o[k]).length));
      return format;
    };function getFirstAndEnd(d)
    {
      var w = d.getDay(), n = 24*60*60*1000;
      var first = new Date(d.getTime() - parseInt("6012345".charAt(w))*n);
      var end = new Date(d.getTime() + parseInt("0654321".charAt(w))*n);
      return {first: first, end: end};
    }
    //-->
    </SCRIPT>
      

  2.   

    回复人: meizz(梅花雪) ( ) 信誉:704  2005-12-23 10:26:41  得分: 0  
     
     
       
    多多给分吧,呵呵!
    zan!