我想找到这一天属于JavaScript中的周数。我对星期的定义是当天到目前为止的星期六的数量。因此,1月的头几天被算作去年的最后一周。从那里,第一个星期六到第五个星期(0周数)。我怎样才能找到一天属于使用JavaScript的一周?
任何人都知道如何实现这样的功能?
我想找到这一天属于JavaScript中的周数。我对星期的定义是当天到目前为止的星期六的数量。因此,1月的头几天被算作去年的最后一周。从那里,第一个星期六到第五个星期(0周数)。我怎样才能找到一天属于使用JavaScript的一周?
任何人都知道如何实现这样的功能?
这?
function week(date) {
var firstSat = new Date(date.getFullYear(), 0, 1);
firstSat.setDate(firstSat.getDate() + (6 - firstSat.getDay()));
var delta = Math.floor((date - firstSat)/(7*24*60*60*1000));
return delta < 0 ?
delta + 52 : // first few days before 1st Sat
delta
}
week(new Date(2009,0,1)); // Jan 1, 2009 => 51 => "1 week into last year"
week(new Date(2009,0,2)); // 51
week(new Date(2009,0,3)); // 0 => "[beginning of] week 1"
week(new Date(2009,0,10)); // 1 => "[beginning of] week 2"
week(new Date(2009,0,11)); // 1 => "still week 2"
week(new Date(2009, 9, 30)); // Fri Oct 30, 2009 => 42
var getWeekForDate = function(date) {
var yearStart = new Date(date.getFullYear(), 0, 0);
// move to first Saturday
yearStart.setDate(yearStart.getDate() + (6 - yearStart.getDay()));
var msSinceStart = date - yearStart;
var daysSinceStart = msSinceStart/(1000 * 60 * 60 * 24);
var weeksSinceStart = daysSinceStart/7;
return Math.floor(weeksSinceStart);
};
最后,我去:
Date.prototype.getWeek = function()
{
var localOffset = this.getTimezoneOffset() * 60000;
var date = new Date(this-localOffset);
var firstSat = new Date(this);
firstSat.setDate(1);
firstSat.setMonth(0);
firstSat.setDate(firstSat.getDate() + (6 - firstSat.getDay()));
if(date < firstSat)
{
date.setDate(date.getDate()-7);
return date.getWeek()+1;
}
else
{
return Math.floor((date - firstSat)/(7*24*60*60*1000));
}
}
从而消除与UTC偏移
实现这样的功能是工作所需的第一件事问题。你没有提供任何证据表明你已经申请任何。为什么有人会真正为你提供答案,我是无法理解,然后你还有胆量挑剔他们 – 2009-10-31 09:49:43
我申请工作,但没有我尝试的成功。而且我不挑剔,我只是说这些解决方案没有解决问题。对不起,如果我看起来这样。 – Eric 2009-10-31 09:53:23
@George:所谓社区有对工作的要求略有不同的角度,这里比你会发现在一个简单的NG或论坛。一个好的和被接受的答案并不完全没有奖励。其次,SO的目标是成为迅速找到问题答案的地方。所以搜索者甚至不需要花费精力去问这个问题,因为别人已经拥有了。 – AnthonyWJones 2009-10-31 11:54:00