获取当前周的开始日期和结束日期(周从星期一开始,以星期日结束)
Get start date and end date of current week (week start from monday and end with sunday )
我想显示当前星期的开始日期和结束日期。(周开始=星期一,周结束=星期日)我设法在星期一展示。
但是我无法得到周日的约会。请张贴我,如果有人有解决方案。
<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>
可以使用下面的函数:
// 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'));
试试这个:
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));
在其他示例中,如果星期日落在其他月份,您将遇到问题。这应该可以解决这个问题:
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);
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(firstday .setDate(last)); // 12-Jul-2014
如果设置Date为01- july -2014,则第一天显示为29- june -2014, 最后一天显示为05- june -2014,而不是05-07-2014 。为了解决这个问题,我使用了
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(firstday.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
根据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];
}
稍微修改了@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();
使用https://momentjs.com使它更简单。
-
要得到周以星期日开始,以星期六结束,然后使用:moment().startOf("week").toDate()和时刻().endOf("周").toDate ()
-
要得到周从星期一开始以星期日结束,然后使用:moment().startOf("isoWeek").toDate()和moment().endOf("isoWeek").toDate()
在moment v2.18.1上尝试了这个,它可以工作。
希望这对你有帮助,更多信息可以参考moment docs
您可以修改返回值以满足您的需要,现在它只返回Sunday的完整对象。
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());
我希望这对你有用:
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));
}
这些方法将返回一周的开始日期和结束日期。
- 不同月份的问题也通过下面的代码修复。
-
增加了格式"M.dd。yyyy"功能。
函数startAndEndOfWeek(设置当前日期){Var day = null;Var日期=空;Var月=空;Var年=空;Var mon = null;Var true = 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];
}
函数getMonthValue(月){开关(月){情况0:返回"Jan";打破;情况1:返回"Feb";打破;情况2:返回"Mar";打破;情况3:返回"Apr";打破;情况4:返回"May";打破;情况5:返回"君";打破;情况6:返回"Jul";打破;情况7:返回"Aug";打破;案例8:返回"Sep";打破;情况9:返回"Oct";打破;情况10:返回"Nov";打破;情况11:返回"Dec";打破;}}函数getDateValue(天){如果(方法& lt(天);10){返回"0" +日;}返回一天;}
如本链接
function endOfWeek(date)
{
var lastday = date.getDate() - (date.getDay() - 1) + 6;
return new Date(date.setDate(lastday));
}
dt = new Date();
console.log(endOfWeek(dt).toString());
纯香草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)
检查从周一开始到周日的周数
const curr = new Date(); // get current date
const currentWeekDay = curr.getDay();
const lessDays = currentWeekDay === 0 ? 6 : currentWeekDay - 1; // handle sunday to monday week start day
const wkStart = new Date(new Date(curr).setDate(curr.getDate() - lessDays));
const wkEnd = new Date(new Date(wkStart).setDate(wkStart.getDate() + 6));
- 希望日期开始结束于while循环中的一个房间id的一个数组
- 使用javascript&自定义验证器检查开始日期和结束日期
- 如何在dhtmlxgantt中显示灯箱中的开始日期、结束日期和持续时间
- 如何在javascript中获得给定的月份开始日期和结束日期
- 在选择开始日期后设置结束日期
- JavaScript-计算两个日期之间的天数(包括结束日期)
- 基础日期选择器、结束日期(和时间)不能早于开始日期(和时间)
- 结束日期作为基础日期时间选择器中的选定开始日期
- 开始日期和结束日期输入字段的 JQuery 筛选器表
- 在ExtJS中获取开始/结束日期之间的日期
- 转换mysql的Fullcalendar开始/结束日期
- angularjs提交表单中的开始日期结束日期验证应被禁用
- Jquery FullCalendar扩展开始日期或结束日期
- 从jquery中的开始日期计算结束日期
- 检查开始日期是否小于结束日期(不使用任何pluguin)
- 如何在引导程序中比较结束日期和开始日期,以确保结束日期大于开始日期
- JSON Linq.js 筛选开始日期结束日期列
- Jquery UI日期起始日期和日期结束字段验证
- 比较日期——结束日期应该大于开始日期
- j使用时区/开始日期/结束日期查询进度条