我想显示当前周的开始日期和结束日期。 (周开始=周一,周末=周日) 我设法显示星期一。
但是我无法得到星期天的约会。 如果有人有解决方案,请发帖给我。
答案 0 :(得分:31)
<script>
Date.prototype.getWeek = function(start)
{
//Calcing the starting point
start = start || 0;
var today = new Date(this.setHours(0, 0, 0, 0));
var day = today.getDay() - start;
var date = today.getDate() - day;
// Grabbing Start/End Dates
var StartDate = new Date(today.setDate(date));
var EndDate = new Date(today.setDate(date + 6));
return [StartDate, EndDate];
}
// test code
var Dates = new Date().getWeek();
alert(Dates[0].toLocaleDateString() + ' to '+ Dates[1].toLocaleDateString())
</script>
我相信这有效。
答案 1 :(得分:11)
以下功能可以解决问题:
// return an array of date objects for start (monday)
// and end (sunday) of week based on supplied
// date object or current date
function startAndEndOfWeek(date) {
// If no date object supplied, use current date
// Copy date so don't modify supplied date
var now = date? new Date(date) : new Date();
// set time to some convenient value
now.setHours(0,0,0,0);
// Get the previous Monday
var monday = new Date(now);
monday.setDate(monday.getDate() - monday.getDay() + 1);
// Get next Sunday
var sunday = new Date(now);
sunday.setDate(sunday.getDate() - sunday.getDay() + 7);
// Return array of date objects
return [monday, sunday];
}
// Mon Nov 12 2012 00:00:00
// Sun Nov 18 2012 00:00:00
alert(startAndEndOfWeek(new Date(2012,10,14)).join('\n'));
答案 2 :(得分:10)
试试这个:
var current = new Date(); // get current date
var weekstart = current.getDate() - current.getDay() +1;
var weekend = weekstart + 6; // end day is the first day + 6
var monday = new Date(current.setDate(weekstart));
var sunday = new Date(current.setDate(weekend));
答案 3 :(得分:3)
SetDate
将设置该月的某一天。在月初和月末使用setDate
将导致错误的一周
var curr = new Date("08-Jul-2014"); // get current date
var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week
var last = first + 6; // last day is the first day + 6
var firstday = new Date(curr.setDate(first)); // 06-Jul-2014
var lastday = new Date(curr.setDate(last)); // 12-Jul-2014
如果设置日期为2014年7月1日,则将显示第一天为2014年6月29日,最后一天为2014年6月5日,而不是2014年7月5日。所以为了解决这个问题,我用了
var curr = new Date();
day = curr.getDay();
firstday = new Date(curr.getTime() - 60*60*24* day*1000); // will return firstday (i.e. Sunday) of the week
lastday = new Date(curr.getTime() + 60 * 60 *24 * 6 * 1000); // adding (60*60*6*24*1000) means adding six days to the firstday which results in lastday (Saturday) of the week
答案 4 :(得分:2)
在其他例子中,当星期天在其他月份下降时,你会遇到问题。 这应该可以解决问题:
var today, todayNumber, mondayNumber, sundayNumber, monday, sunday;
today = new Date();
todayNumber = today.getDay();
mondayNumber = 1 - todayNumber;
sundayNumber = 7 - todayNumber;
monday = new Date(today.getFullYear(), today.getMonth(), today.getDate()+mondayNumber);
sunday = new Date(today.getFullYear(), today.getMonth(), today.getDate()+sundayNumber);
答案 5 :(得分:1)
根据RobG的回答,我最终得到这个星期一,从星期一午夜开始,星期日23:59:59.999结束。
var weekMap = [6, 0, 1, 2, 3, 4, 5];
function startAndEndOfWeek(date) {
var now = new Date(date);
now.setHours(0, 0, 0, 0);
var monday = new Date(now);
monday.setDate(monday.getDate() - weekMap[monday.getDay()]);
var sunday = new Date(now);
sunday.setDate(sunday.getDate() - weekMap[sunday.getDay()] + 6);
sunday.setHours(23, 59, 59, 999);
return [monday, sunday];
}
答案 6 :(得分:1)
@ReadWriteCode的略微修改答案,这也适用于不同月份。
Date.prototype.getWeek = function()
{
var today = new Date();
var day = today.getDay();
var date = today.getDate() - day;
// Grabbing Start/End Dates
var StartDate = new Date();
var EndDate = new Date();
StartDate.setHours(0,0,0,0); EndDate.setHours(0,0,0,0);
StartDate.setDate(today.getDate()-day);
EndDate.setDate(today.getDate()-day+6);
return {
startDate:StartDate,
endDate: EndDate
};
}
var thisWeekDates=new Date().getWeek();
答案 7 :(得分:0)
您可以修改返回值以满足您的需求,现在它只返回星期日的完整对象。
Date.prototype.endWeek=function(){
return new Date(this.getFullYear(), this.getMonth(),(7-this.getDay())+this.getDate());
}
//call like this
var myDate = new Date();
var Sunday = myDate.endWeek();
alert("Sunday falls on "+ Sunday.getDate());
答案 8 :(得分:0)
我希望这对你有用:
Date.prototype.getWeekEndDate = function () {
diff = 6 - this.getDay();
if (diff < 0) {
diff += 6;
}
this.setDate(this.getDate() + (1 * diff));
return this;
}
Date.prototype.getWeekStartDate = function () {
diff = this.getDay() - 6;
if (diff < 0) {
diff += 7;
}
return this.setDate(this.getDate() + (-1 * diff));
}
这些方法将返回一周的开始日期和结束日期。
答案 9 :(得分:0)
添加了格式“M.dd.yyyy”功能。
function startAndEndOfWeek(setDate) { var day = null; var date = null; var month = null; var year = null; var mon = null; var tue = null; var wed = null; var thu = null; var fri = null; var sat = null; var sun = null;
var now = setDate ? new Date(setDate) : new Date();
now.setHours(0,0,0,0);
var monday = new Date(now); var tuesday = new Date(now); var wednesday = new Date(now); var thursday = new Date(now);
var friday = new Date(now); var saturday = new Date(now); var sunday = new Date(now);
if(new Date(now).getDay() == 0)
{
monday.setDate(monday.getDate() - 6);
tuesday.setDate(tuesday.getDate() - 5);
wednesday.setDate(wednesday.getDate() - 4);
thursday.setDate(thursday.getDate() - 3);
friday.setDate(friday.getDate() - 2);
saturday.setDate(saturday.getDate() - 1);
sunday.setDate(sunday.getDate() - 0);
}
else
{
monday.setDate(monday.getDate() - monday.getDay() + 1);
tuesday.setDate(tuesday.getDate() - tuesday.getDay() + 2);
wednesday.setDate(wednesday.getDate() - wednesday.getDay() + 3);
thursday.setDate(thursday.getDate() - thursday.getDay() + 4);
friday.setDate(friday.getDate() - friday.getDay() + 5);
saturday.setDate(saturday.getDate() - saturday.getDay() + 6);
sunday.setDate(sunday.getDate() - sunday.getDay() + 7);
}
date = monday.getDate();
month = monday.getMonth();
year = monday.getFullYear();
mon = getMonthValue(month) + "." + getDateValue(date) + "." + year;
date = tuesday.getDate();
month = tuesday.getMonth();
year = tuesday.getFullYear();
tue = getMonthValue(month) + "." + getDateValue(date) + "." + year;
date = wednesday.getDate();
month = wednesday.getMonth();
year = wednesday.getFullYear();
wed = getMonthValue(month) + "." + getDateValue(date) + "." + year;
date = thursday.getDate();
month = thursday.getMonth();
year = thursday.getFullYear();
thu = getMonthValue(month) + "." + getDateValue(date) + "." + year;
date = friday.getDate();
month = friday.getMonth();
year = friday.getFullYear();
fri = getMonthValue(month) + "." + getDateValue(date) + "." + year;
date = saturday.getDate();
month = saturday.getMonth();
year = saturday.getFullYear();
sat = getMonthValue(month) + "." + getDateValue(date) + "." + year;
date = sunday.getDate();
month = sunday.getMonth();
year = sunday.getFullYear();
sun = getMonthValue(month) + "." + getDateValue(date) + "." + year;
return [mon, tue , wed, thu, fri, sat, sun];
}
function getMonthValue(month) { 开关(月) { 案例0:返回“Jan”; 打破; 案例1:返回“2月”; 打破; 案例2:返回“Mar”; 打破; 案例3:返回“4月”; 打破; 案例4:返回“五月”; 打破; 案例5:返回“君”; 打破; 案例6:返回“Jul”; 打破; 案例7:返回“8月”; 打破; 案例8:返回“九月”; 打破; 案例9:返回“十月”; 打破; 案例10:返回“11月”; 打破; 案例11:返回“Dec”; 打破; } } function getDateValue(day) { if(parseInt(day)&lt; 10) { 返回“0”+天; } 返回日; }
答案 10 :(得分:0)
使用https://momentjs.com使其更简单。
要获取周从周日开始到周六, 然后使用:moment()。startOf(“ week”)。toDate()和 moment()。endOf(“ week”)。toDate()
要获取一周从星期一开始到星期日结束, 然后使用:moment()。startOf(“ isoWeek”)。toDate()和moment()。endOf(“ isoWeek”)。toDate()
在v2.18.1时刻进行了尝试,可以正常工作。
希望这会有所帮助,有关更多信息,您可以参考一下相关文档。
答案 11 :(得分:0)
nginx.ingress.kubernetes.io/rewrite-target: /$2
答案 12 :(得分:0)
纯香草JS。没有第三方库。周日至周日上午 00 点返回。
const now = new Date()
const startOfWeek = new Date(now.getFullYear(), now.getMonth(), now.getDate() - now.getDay())
const endOfWeek = new Date(now.getFullYear(), now.getMonth(), startOfWeek.getDate() + 7)