나는 today = new Date();
물건이있다. 이번주의 첫날과 마지막 날을 가져와야합니다. 일주일의 시작일과 종료일로 일요일과 월요일에 대한 두 가지 변형이 모두 필요합니다. 이제 코드와 약간 혼동합니다. 당신이 나를 도울 수 있습니까?
답변
var curr = new Date; // 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)).toUTCString();
var lastday = new Date(curr.setDate(last)).toUTCString();
firstday
"Sun, 06 Mar 2011 12:25:40 GMT"
lastday
"Sat, 12 Mar 2011 12:25:40 GMT"
이것은 첫날 = 이번 주 일요일, 마지막 날 = 이번 주 토요일에 적용됩니다. 월요일에서 일요일까지 실행하도록 확장하는 것은 간단합니다.
다른 달의 첫날과 마지막 날에 작동하도록 만드는 것은 사용자를위한 연습으로 남겨집니다.
답변
허용되는 답변에주의하십시오. 시간이 00:00:00 및 23:59:59로 설정되지 않으므로 문제가 발생할 수 있습니다.
Moment.js를 사용하여 날짜를 처리하는 것이 좋습니다. 귀하의 경우 :
var startOfWeek = moment().startOf('week').toDate();
var endOfWeek = moment().endOf('week').toDate();
이것은 작은 사용 사례 일 뿐이며 많은 복잡한 작업을 수행하는 것은 정말 간단합니다.
자세한 내용은 http://momentjs.com/ 에서 확인할 수 있습니다 .
답변
다음 코드 줄을 사용하여주의 첫 번째 및 마지막 날짜를 가져올 수도 있습니다.
var curr = new Date;
var firstday = new Date(curr.setDate(curr.getDate() - curr.getDay()));
var lastday = new Date(curr.setDate(curr.getDate() - curr.getDay()+6));
도움이 되길 바랍니다 ..
답변
시작일에 대해 첫날과 마지막 날을 빠르게 확인할 수있는 방법이 있습니다. 그것을 아는 것은:
1 일 = 86,400,000 밀리 초.
JS 날짜 값은 밀리 초 단위입니다.
레시피 : 한주의 시작일을 얻기 위해 제거해야하는 일 수를 파악합니다 (1 일 분량의 밀리 초 곱하기). 그 후 남은 것은 종료일을 얻기 위해 6 일을 추가하는 것입니다.
var startDay = 1; //0=sunday, 1=monday etc.
var d = now.getDay(); //get the current day
var weekStart = new Date(now.valueOf() - (d<=0 ? 7-startDay:d-startDay)*86400000); //rewind to start day
var weekEnd = new Date(weekStart.valueOf() + 6*86400000); //add 6 days to get last day
답변
우수한 (불변) date-fns 라이브러리 는이를 가장 간결하게 처리합니다.
const start = startOfWeek(date);
const end = endOfWeek(date);
기본 시작 요일은 일요일 (0)이지만 다음과 같이 월요일 (1)로 변경할 수 있습니다.
const start = startOfWeek(date, {weekStartsOn: 1});
const end = endOfWeek(date, {weekStartsOn: 1});
답변
이런 식으로 할 수 있습니다.
var today = new Date();
var startDay = 0;
var weekStart = new Date(today.getDate() - (7 + today.getDay() - startDay) % 7);
var weekEnd = new Date(today.getDate() + (7 - today.getDay() - startDay) % 7);
어디 startDay
0에서 6까지의 숫자이고 0은 일요일 스탠드 (등 즉, 1 = 월요일 2 = 화요일).
답변
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 년 7 월 5 일 대신 첫날은 2014 년 6 월 29 일로, 마지막 날은 2014 년 6 월 5 일로 표시됩니다.
그래서 내가 사용한이 문제를 극복하십시오.
var curr = new Date();
day = curr.getDay();
firstday = new Date(curr.getTime() - 60*60*24* day*1000); //will return firstday (ie 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