var getYearWeek = function (a, b, c) { var d1 = new Date(a, b-1, c), d2 = new Date(a, 0, 1), d = Math.round((d1 - d2) / 86400000); return Math.ceil((d + ((d2.getDay() + 1) - 1)) / 7); }; alert(getYearWeek(2010, 10, 13));
为啥用 Math.round 和 Math.ceil
function setDate(temp) { var date = new Date(temp); var Year = date.getYear(); var Month = date.getMonth(); var Day = date.getDate(); var d1 = new Date(Year, Month, Day); var d2 = new Date(Year, 0, 1); var d = Math.round((d1 - d2) / 86400000)-1; var week = Math.ceil((d + ((d2.getDay() + 1) - 1)) / 7); alert(week); } 我试着套你的那个方法 我是想根据一个日期 temp 得到一个当前周 是从星期一开始算的
[code={JScript}]{ var getWeeks = function(year, mouth, day) { var day1 = new Date(year, mouth-1, day); var day2 = new Date(year, 0, 1);
var firstweek = day2.getDay(); if(firstweek == 0) { firstweek = 6; }else { firstweek = firstweek - 1; } firstweek = (7 - firstweek) % 7; var day3 = new Date(year, 0, 1+firstweek) var result = Math.round((day1.getTime() - day3.getTime())/(1000*60*60*24)); result = Math.ceil(result / 7); return result; }; alert(getWeeks(2010, 10, 13));}[/code]
var getWeeks = function(year, mouth, day) { var day1 = new Date(year, mouth-1, day); var day2 = new Date(year, 0, 1);
var firstweek = day2.getDay();//1月1日是星期几 if(firstweek == 0) { firstweek = 6; }else { firstweek = firstweek - 1; }//转化为0表示星期一,6表示星期日 firstweek = (7 - firstweek) % 7;//计算1月1日离第一周的天数 var day3 = new Date(year, 0, 1+firstweek) var result = Math.round((day1.getTime() - day3.getTime())/(1000*60*60*24)); result = Math.ceil(result / 7); return result; }; alert(getWeeks(2010, 10, 13));
刚才的测试了下,应该有点问题.修改后具体测试了下1月3日,1月4日 var getWeeks = function(year, mouth, day) { var day1 = new Date(year, mouth-1, day); var day2 = new Date(year, 0, 1);
var firstweek = day2.getDay();//1月1日是星期几 if(firstweek == 0) { firstweek = 6; }else { firstweek = firstweek - 1; }//转化为0表示星期一,6表示星期日 firstweek = (7 - firstweek) % 7;//计算1月1日离第一周的天数 var day3 = new Date(year, 0, 1+firstweek) var result = Math.round((day1.getTime() - day3.getTime())/(1000*60*60*24)); result = Math.floor(result / 7)+1;//这个地方应该用floor返回最小次数然后+1 return result; }; alert(getWeeks(2010, 10, 13));
我的在火狐上可以,但在IE上不行 <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; }; function rd(){
//set it
var d = document.getElementById("cstart_date_day").value; //alert(d); var m= document.getElementById("cstart_date_month").value; var ye = document.getElementById("cstart_date_year").value;var riqi=ye+"-"+m+"-"+d; //alert(riqi); var zhou=new Date(riqi).getWeek(true) //alert(zhou); $.ajax({ type: "POST", url: "c21listingguoqutuijie.php",
var getYearWeek = function (a, b, c) {
var d1 = new Date(a, b-1, c), d2 = new Date(a, 0, 1),
d = Math.round((d1 - d2) / 86400000);
return Math.ceil((d + ((d2.getDay() + 1) - 1)) / 7);
};
alert(getYearWeek(2010, 10, 13));
function setDate(temp)
{
var date = new Date(temp);
var Year = date.getYear();
var Month = date.getMonth();
var Day = date.getDate(); var d1 = new Date(Year, Month, Day);
var d2 = new Date(Year, 0, 1);
var d = Math.round((d1 - d2) / 86400000)-1;
var week = Math.ceil((d + ((d2.getDay() + 1) - 1)) / 7); alert(week);
}
我试着套你的那个方法 我是想根据一个日期 temp 得到一个当前周 是从星期一开始算的
var day1 = new Date(year, mouth-1, day);
var day2 = new Date(year, 0, 1);
var firstweek = day2.getDay();
if(firstweek == 0) {
firstweek = 6;
}else {
firstweek = firstweek - 1;
}
firstweek = (7 - firstweek) % 7;
var day3 = new Date(year, 0, 1+firstweek)
var result = Math.round((day1.getTime() - day3.getTime())/(1000*60*60*24));
result = Math.ceil(result / 7);
return result;
};
alert(getWeeks(2010, 10, 13));}[/code]
var day1 = new Date(year, mouth-1, day);
var day2 = new Date(year, 0, 1);
var firstweek = day2.getDay();//1月1日是星期几
if(firstweek == 0) {
firstweek = 6;
}else {
firstweek = firstweek - 1;
}//转化为0表示星期一,6表示星期日
firstweek = (7 - firstweek) % 7;//计算1月1日离第一周的天数
var day3 = new Date(year, 0, 1+firstweek)
var result = Math.round((day1.getTime() - day3.getTime())/(1000*60*60*24));
result = Math.ceil(result / 7);
return result;
};
alert(getWeeks(2010, 10, 13));
var day1 = new Date(year, mouth-1, day);
var day2 = new Date(year, 0, 1);
var firstweek = day2.getDay();//1月1日是星期几
if(firstweek == 0) {
firstweek = 6;
}else {
firstweek = firstweek - 1;
}//转化为0表示星期一,6表示星期日
firstweek = (7 - firstweek) % 7;//计算1月1日离第一周的天数
var day3 = new Date(year, 0, 1+firstweek)
var result = Math.round((day1.getTime() - day3.getTime())/(1000*60*60*24));
result = Math.floor(result / 7)+1;//这个地方应该用floor返回最小次数然后+1
return result;
};
alert(getWeeks(2010, 10, 13));
2010
Sun Mon Tues Wed Thur Fri Sat
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6当我点了 10 这一天的话 返回的时间是 2010-10-10 用你门的方法一调,返回的是40周了,
其实 10 11 12 13 14 15 16 这几天都是属于41周的 下面的17....23是42周 3.....9 是40周的
是从星期一开始算的 不是每周日 太麻烦你们了。还能帮我想想么?
将firstweek = (7 - firstweek) % 7;//计算1月1日离第一周的天数
改成firstweek = (6 - firstweek) % 6;//计算1月1日离第一周的天数 就适合我用了,你看看
我这样改会不会出问题。
<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;
};
function rd(){
//set it
var d = document.getElementById("cstart_date_day").value;
//alert(d);
var m= document.getElementById("cstart_date_month").value;
var ye = document.getElementById("cstart_date_year").value;var riqi=ye+"-"+m+"-"+d;
//alert(riqi);
var zhou=new Date(riqi).getWeek(true)
//alert(zhou);
$.ajax({
type: "POST",
url: "c21listingguoqutuijie.php",
//data: "district=",
data: "zhou=" + zhou,
dataType: "html",
success: function(msg){ if(parseInt(msg)!=0)
{
$('#guoqutuijie').html(msg);
}
} }); //document.getElementById(objname+'_year').value = storeArr[0];
}
</script>
谁能帮我指点下.这是为什么?在IE上没有走这个var zhou=new Date(riqi).getWeek(true)函数.
急用