2014-04-08 1 views
1

실제 날짜에 +1 일을 추가하는 코드가 있습니다.날짜를 추가하십시오 - 주말을 피하십시오 (토요일, 일요일)

var date = '30 Apr 2010'; 
var actual_date = new Date(date); 
var final_date = new Date(actual_date.getFullYear(), actual_date.getMonth(), actual_date.getDate()+1); 

지금 달성하고 싶은 것은 실제 날짜가 금요일 인 경우 주말 (토요일과 일요일)을 피하는 것입니다.

Normal midweek example: 
tuesday, 5th -> wednesday, 6th 

Weekend example: 
friday, 6th -> monday, 9th 

답변

2

또는 6 (= 토) :

d = new Date(2014, 3, 4) // Fri Apr 04 

do { 
    d.setDate(d.getDate() + 1) 
} while(d.getDay() == 0 || d.getDay() == 6); 

console.log(d); // Mon Apr 07 
2

시험 actual_date.getDay(), 요일입니다. 5 일 (금요일) 인 경우 3 일 추가, 6 일 (토요일) 인 경우 2 일 추가, 그렇지 않으면 1 일 추가.

0

단지로 시도 :

var date = '30 Apr 2010'; 
var final_date = actual_date = new Date(date); 

do { 
    final_date = new Date(final_date.getFullYear(), final_date.getMonth(), final_date.getDate()+1); 
    var day = final_date.getDay(); 
} while (day == 6 || day == 0); // (6 is saturday, 0 is sunday) 

출력 : 평일 (= 일) 0 인 경우는 루프에서 하루를 추가하고 확인할 수 있습니다

Mon May 03 2010 00:00:00 GMT+0200 (CEST) 
0

시도

var date = '30 Apr 2010'; 
var actual_date = new Date(date); 
var final_date = new Date(actual_date); 
final_date.setDate(final_date.getDate() + 1 + (actual_date.getDay() > 4 ? 7 - actual_date.getDay() : 0)); 
,

데모 : Fiddle

0
var final_date = new Date(
    actual_date.getFullYear(), 
    actual_date.getMonth(), 
    actual_date.getDay() === 5 // Friday 
     ? actual_date.getDate()+3 
     : actual_date.getDay() === 6 // Saturday 
     ? actual_date.getDate() + 2 
     : actual_date.getDate() + 1 // others 
); 
+2

일요일은 0, 금요일은 1 ... 금요일은 5, 토요일은 6입니다. –

0

다음 예는 momentjs

var aDate = moment("22. Apr. 2011"); // your starting date 
var DAY_IN_MSEC = 1000 * 60 * 60 * 24; // a day represented in milliseconds 
var fiveDays = 5 * DAY_IN_MSEC; // five days 


var newDate = moment(aDate + fiveDays); // add your 5 days to original date 
var dayOfWeek = newDate.weekday(); // get the index of the day *locale dependent 
if (dayOfWeek >= 5) {    // is saturday, sunday *locale dependent 
    var daysToMonday = 7 - dayOfWeek; 
    newDate += daysToMonday * DAY_IN_MSEC; // add the difference needded until Monday 
    newDate = moment(newDate); // transform the msecs in a moment object 
} 

alert('voila!'); 
0

사용이 작동합니다 :

var date = '30 Apr 2010'; 
var actual_date = new Date(date); 

// Add 3 days if friday, 2 days if saturday otherwise add 1 day. 
var daysToAdd = actual_date.getDay() === 5 ? 3 : actual_date.getDay() === 6 ? 2 : 1; 

var final_date = new Date(actual_date.getFullYear(), actual_date.getMonth(), actual_date.getDate() + daysToAdd); 

또는 더 자세한 정보를 :

var daysToAdd = 1; 
if (actual_date.getDay() === 5) 
    daysToAdd = 3; 
else if (actual_date.getDate() === 6) 
    daysToAdd = 2; 
0

getDay() 함수를 사용하여 5 (금)인지 확인하십시오. 그런 다음 3 일을 더하십시오. 피들보기 : http://jsfiddle.net/JLGxQ/

var date = '30 Apr 2010'; 
var actual_date = new Date(date); 

if(actual_date.getDay() == 5){ 
    x = 3; 
} else { 
    x = 1; 
} 

var final_date = new Date(actual_date.getFullYear(), actual_date.getMonth(), actual_date.getDate()+x); 
관련 문제