Функция, которая изменит дату, если это выходные

StackOverflow https://stackoverflow.com//questions/12673681

  •  12-12-2019
  •  | 
  •  

Вопрос

Я сделал функцию, которая изменила дату, если это выходные, но вместо того, чтобы дать мне на следующий день, это делает со мной день + 1, например, у меня был вход с 31-09-2012, который был в последнем воскресенье.

У меня есть моя функция

<script type="text/javascript">
    function getdate2() {
        var items = new Array();
        var itemCount = document.getElementsByClassName("datepicker hasDatepicker");

        for (var i = 0; i < itemCount.length; i++) {
            items[i] = document.getElementById("date" + (i + 1)).value;
        }



        for (var i = 0; i < itemCount.length; i++) {
            items[i] = document.getElementById("date" + (i + 1)).value;
            var itemDtParts = items[i].split("-");
            var itemDt = new Date(itemDtParts[2], itemDtParts[1] - 1, itemDtParts[0]);
                    if (itemDt.getDay() == 6) {

                itemCount[i].value = (itemDt.getDate() < 9 ? "0" : "")+ (itemDt.getDate()+2)+ "-" + (itemDt.getMonth() < 9 ? "0" : "") + (itemDt.getMonth() + 1) + "-" + itemDt.getFullYear();


            }
                        if (itemDt.getDay() == 0) {

               itemCount[i].value = (itemDt.getDate() < 9 ? "0" : "")+ (itemDt.getDate()+1)+ "-" + (itemDt.getMonth() < 9 ? "0" : "") + (itemDt.getMonth() + 1) + "-" + itemDt.getFullYear();


            }

        }
       return items;
       }
</script>
.

Но вместо того, чтобы дать мне первый октябрь, он дал мне 31-09-2012, что не существует.

Я действительно не знаю, как обрабатывать.

Это было полезно?

Решение

Вам нужно хранить максимальное количество дней в месяц в массиве.

var dayspermonth = new array(31,28,31,30,31,30,31,31,30,31,30,31);
.

лучше всего сделать в отдельной функции:

function int lastDay(d, m){
    var result = d
    var dayspermonth = new array(31,28,31,30,31,30,31,31,30,31,30,31);
    if(d > dayspermonth[m]){
        d=1;
    }
    return d;
}
.

Тогда вам просто нужно сделать (например):

itemCount[i].value = (itemDt.getDate() < 9 ? "0" : "")+ lastDay((itemDt.getDate()+1), itemDt.getMonth())+ "-" + (itemDt.getMonth() < 9 ? "0" : "") + (itemDt.getMonth() + 1) + "-" + itemDt.getFullYear();
.

<Сильные> Редактировать: Вы должны увеличить месяц на 1, если это произойдет.И вам нужно добавить от 1 до года и настроить месяц до 1, если старая дата была 31-12-ггг.

Другие советы

попробуйте date.js Легко Найти выходные

Date.today().is().weekday() // Is today a weekday?

2012/07/25 - суббота.Код проверьте, если его суббота - добавьте 2 дня, если его воскресенье - добавьте 1 день http://jsfiddle.net/s3q4p/

var mydate=new Date(2012,07,25)
if(mydate.getDay() == 6) //Saturday
mydate =new Date(mydate.getFullYear(),mydate.getMonth(),mydate.getDate()+2)
else if (mydate.getDay() == 0) //Sunday
     mydate =new Date(mydate.getFullYear(),mydate.getMonth(),mydate.getDate()+1)
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top