에 시작, 자바 스크립트의 주에 일을 가져 오기 JavaScript로 2011 년 3 월 2 일의 요일.다음은 사용자로부터 주어진 입력의 주 일요일
일요일 6 일 월요일 7 일 화요일 8 일 수요일 9 일 목요일 10 일 금요일 11 일 토요일 12 일
아이디어가 있으십니까? 감사!
에 시작, 자바 스크립트의 주에 일을 가져 오기 JavaScript로 2011 년 3 월 2 일의 요일.다음은 사용자로부터 주어진 입력의 주 일요일
일요일 6 일 월요일 7 일 화요일 8 일 수요일 9 일 목요일 10 일 금요일 11 일 토요일 12 일
아이디어가 있으십니까? 감사!
을 감안할 때
var year = 2011;
var month = 3;
var week = 2;
및
var firstDateOfMonth = new Date(year, month - 1, 1); // Date: year-month-01
var firstDayOfMonth = firstDateOfMonth.getDay(); // 0 (Sun) to 6 (Sat)
var firstDateOfWeek = new Date(firstDateOfMonth); // copy firstDateOfMonth
firstDateOfWeek.setDate( // move the Date object
firstDateOfWeek.getDate() + // forward by the number of
(firstDayOfMonth ? 7 - firstDayOfMonth : 0) // days needed to go to
); // Sunday, if necessary
firstDateOfWeek.setDate( // move the Date object
firstDateOfWeek.getDate() + // forward by the number of
7 * (week - 1) // weeks required (week - 1)
);
var dateNumbersOfMonthOnWeek = []; // output array of date #s
var datesOfMonthOnWeek = []; // output array of Dates
for (var i = 0; i < 7; i++) { // for seven days...
dateNumbersOfMonthOnWeek.push( // push the date number on
firstDateOfWeek.getDate()); // the end of the array
datesOfMonthOnWeek.push( // push the date object on
new Date(+firstDateOfWeek)); // the end of the array
firstDateOfWeek.setDate(
firstDateOfWeek.getDate() + 1); // move to the next day
}
는
dateNumbersOfMonthOnWeek
는 그 주의 날짜 수있을 것이다.datesOfMonthOnWeek
은 해당주의 날짜 개체를 갖습니다.일자리가 과잉 인 것처럼 보일 수 있지만 대부분의 경우 다른 날짜로 넘어갈 때와 같이 모든 상황에서 작동해야합니다. 그래도 덜 장황하게 최적화 될 수 있다고 확신합니다.
일반적으로 js의 날짜 조작에는 Datejs을 사용합니다. 나는 이런 식으로 할 거라고 :
var firstDayOfWeek = new Date(year,month-1,1).moveToDayOfWeek(0,-1).addWeeks(week-1);
var lastDayOfWeek = firstDayOfWeek.addDays(6);
을 해당 월의 첫 주가에있는 월의 첫 번째와 일이라고 가정하면, 다음 기능은 일주일의 첫 날의 날짜를 반환합니다 특정 연도, 월, 주 수 :
/*
Input year, month and week number from 1
Returns first day in week (Sunday) where
first week is the first with 1st of month in it
*/
function getFirstDayOfWeek(y, m, w) {
var d = new Date(y, --m);
d.setDate(--w * 7 - d.getDay() + 1);
return d;
}
alert(getFirstDayOfWeek(2011,3, 2)); // Sun Mar 06 2011
이 일의 나머지를 얻으려면, 단지 루프마다 날짜에 하나를 추가 6 회, 예를 들어,
function getWeekDates(y, m, w) {
var d = getFirstDayOfWeek(y, m, w)
var week = [new Date(d)];
var i = 6;
while (i--) {
week.push(new Date(d.setDate(d.getDate() + 1)));
}
return week;
}
// Show week of dates
var week = getWeekDates(2011,3, 2);
for (var i=0, iLen=week.length; i<iLen; i++) {
alert(week[i]);
}
당신이 대답을 robG에 대한 감사 ... 정말 서둘러 모드에 지금. 코드를 확인할 수 없었습니다. – andsien
@RobG : 코드를 테스트하고 문제를 만났습니다. 또한 결과를보기 위해 Chrome Console을 사용했습니다. 세부 사항 : '주 번호 : 5 주 : 일요일 일요일 26 2014 00:00:00 GMT + 0700 (SE 아시아 표준시), Mon Jan 27 2014 00:00:00 GMT + 0700 (SE 아시아 표준시), ..., 토요일 Feb 01 2014 00:00:00 GMT + 0700 (SE 아시아 표준시) 주 번호 : 6 주 : 3 월 2 일 2014 00:00:00 GMT + 0700 (SE 아시아 표준시), Mon 03 3 월 2014 00:00:00 GMT + 0700 (동남아시아 표준시), ..., 토요일 03 2014 00:00:00 GMT + 0700 (동남아시아 표준시) ' 2014 년 1 월 2 일 (5 주차) ~ 2014 년 2 월 3 일 (6 주차). 고쳐주세요. –
나를 위해 일한 첫 번째 대답의 약간의 수정 :
year = 2014;
week = 31;//week number is 31 for the example, could be 120.. it will just jump trough years
// get the date for the first day of the year
var firstDateOfYear = new Date(year,0,1);
// set the date to the number of days for the number of weeks
firstDateOfYear.setDate(firstDateOfYear.getDate()+(7 * (week-1)));
// get the number of the day in the week 0 (Sun) to 6 (Sat)
var counter = firstDateOfYear.getDay();
//make sunday the first day of the week
for(i=0;i<counter;i++){
firstDateOfYear.setDate(firstDateOfYear.getDate()-1)
}
var firstDateOfWeek = new Date(firstDateOfYear); // copy firstDateOfYear
var dateNumbersOfMonthOnWeek = []; // output array of date #s
var datesOfMonthOnWeek = []; // output array of Dates
for (var i = 0; i < 7; i++) { // for seven days...
dateNumbersOfMonthOnWeek.push( // push the date number on
firstDateOfWeek.getDate()); // the end of the array
datesOfMonthOnWeek.push( // push the date object on
new Date(+firstDateOfWeek)); // the end of the array
firstDateOfWeek.setDate(
firstDateOfWeek.getDate() + 1); // move to the next day
}
이 어떻게 해당 월의 첫 주 정의합니까? 그 달의 첫 달을 가진 주입니까? 이 경우 전월의 마지막 주일 수도 있는데 이는 혼란 스러울 수 있습니다. 많은 곳에서 일주일의 첫 번째 날은 일요일이 아닌 월요일입니다. – RobG
@RobG ".. 일주일의 첫날은 월요일이 아니고 일요일이 아닙니다."우리가 ISO를 기반으로한다면 그것은 맞습니다. 그러나 그것은 또한 어느 나라에 살고 있는지에 달려 있습니다. 대부분의 아시아 국가들은 일요일에 일주일에 시작합니다. 내 일주일에 일주일에 시작 했어 내 의뢰인이 그러라고 했어. – andsien