Javascript - Add Business Days To A User Selected Date
I need to add user defined business days to a user defined date and for it to display in an alert box. Could you please look at my code and let me know what needs changing: See JSF
Solution 1:
For a start write a function that takes the selected date and days:
<center>Select Business Days To Add<br><selectname="coll"id="t1"><optionvalue="1">1</option><optionvalue="2">2</option><optionvalue="3">3</option></select><p><scriptsrc="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script><script> $(function() { $( "#datepicker" ).datepicker(); });
functiongetSelectedDate() {
var day = $("#datepicker").datepicker("getDate");
var daysToAdd = $("#t1").val();
returnNumber(daysToAdd) + Number(day.getDate());
}
</script><inputid="datepicker"onchange="alert(getSelectedDate());"/>
I suppose business days mean from monday to friday, so adding 1 to friday would mean actually monday and not saturday.
Further
- you need to look if the current day is friday and add two days to the selected business days to jump over the weekend - use getDate()
- if it is end of the month (regarding even and uneven months 30 and 31 days and february on leap and not leap year) and if needed increment the month too - use getMonth
- if it is end of the year, increment the year - use getFullYear
The code (without the check for weekends) looks like this:
<center>Select Business Days To Add<br><selectname="coll"id="t1"><optionvalue="1">1</option><optionvalue="2">2</option><optionvalue="3">3</option></select><p><scriptsrc="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script><script> $(function() { $( "#datepicker" ).datepicker(); });
functionisEndOfMonth(date) {
// day of month from 1 to 31var selectedDay = date.getDate();
// months with 31 daysif (date.getMonth() == 0 || date.getMonth() == 2 ||
date.getMonth() == 4 || date.getMonth() == 6 ||
date.getMonth() == 7 || date.getMonth() == 9 ||
date.getMonth() == 11) {
return selectedDay == 31;
}
// february 28 / 29 days TODO check for leap year!if (date.getMonth() == 1) { return selectedDay == 28; }
// months with 30 daysif (date.getMonth() == 3 || date.getMonth() == 5 ||
date.getMonth() == 8 || date.getMonth() == 10) {
return selectedDay == 30;
}
returnfalse;
}
functionisEndOfYear(month) {
return month > 11;
}
functiongetSelectedDate() {
var day = $("#datepicker").datepicker("getDate");
var daysToAdd = Number($("#t1").val());
// values from which the new date is constructedvar selectedMonth = day.getMonth();
var selectedYear = day.getFullYear();
var selectedDay = day.getDate();
// if (isEndOfMonth(day)) {
// start new month
selectedDay = 1;
selectedMonth++;
if (isEndOfYear(selectedMonth)) {
// start new year
selectedYear++;
}
}
// add business days
selectedDay += daysToAdd;
// TODO check if the result is weekend and jump over it. After a jump the same checks as above should be called!returnnewDate(selectedYear, selectedMonth, selectedDay, 0, 0, 0, 0);
}
</script><inputid="datepicker"onchange="alert(getSelectedDate());"/>
If for example the selected date is 14.Oct.2013, selected days 2, the function yields 16.Oct.2013.
Post a Comment for "Javascript - Add Business Days To A User Selected Date"