[英]How can I get dates given the name of the day of the week in Javascript?
[英]How can I find the week which a day belongs to using javascript?
我想在javascript中找到一天所属的星期几。 我对周的定义是到该日期为止的星期六数。 因此,一月的前几天算作上一年的最后一周。 从那里开始,上一个星期五的第一个星期六是第0周(以0为基础的周计数)。
任何人都知道如何实现这样的功能吗?
这个?
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偏移量的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.