Рассчитайте пару дат, связанных вместе - PullRequest
1 голос
/ 29 мая 2020

Следующий код выводит мне в следующую пятницу и в следующее воскресенье . Мне нужно вывести в следующую пятницу и в следующее воскресенье после выведенной пятницы , а не только в следующее воскресенье. В противном случае, если сегодня пятница или суббота, это не сработает. Пример: если сегодня пятница 05/06 , мой результат будет пятница 05/13 и воскресенье 05/07 вместо воскресенье 05/15 (это тот результат, который мне нужен).

Это код, который я использую на самом деле. Как исправить, чтобы он заработал?

<script type="text/javascript">
 function nextWeekdayDate(date, day_in_week) {
  var ret = new Date(date||new Date());
  ret.setDate(ret.getDate() + (day_in_week - 1 - ret.getDay() + 7) % 7 + 1);
  return ret;
}

var date = new Date();
console.log(nextWeekdayDate(date, 5));

    $(document).ready(function() {
    $('#button').click(function(e) {  
        var checkinf = nextWeekdayDate(null, 5);
        var [yyyy, mm, dd] = checkinf.toISOString().split('T')[0].split('-');
        var checkouts = nextWeekdayDate(null, 7);
            var [cyyy, cm, cd] = checkouts.toISOString().split('T')[0].split('-');


             window.open( "https://www.mydynamiclink.com" + variables );

                            });

        });


</script>

спасибо :)

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Задание:

var checkouts = nextWeekdayDate(null, 7);

получает в следующее воскресенье после сегодняшнего. Вам нужно воскресенье после checkinf , поэтому передайте его в вызове. Кроме того, номер дня воскресенья - 0:

var checkouts = nextWeekdayDate(checkinf, 0);

function nextWeekdayDate(date, day_in_week) {
  var ret = new Date(date || new Date());
  ret.setDate(ret.getDate() + (day_in_week - 1 - ret.getDay() + 7) % 7 + 1);
  return ret;
}


let nextFriday = nextWeekdayDate(null, 5);
let followingSunday = nextWeekdayDate(nextFriday, 0);

console.log('Next Friday     : ' +  nextFriday.toDateString() +
  '\nFollowing Sunday: ' + followingSunday.toDateString()); 
1 голос
/ 29 мая 2020

Я думаю, что для checkouts вы можете просто увеличить checkinf на два дня, если ваш checkinf выводится правильно.

Я имею в виду следующее: вместо var checkouts = nextWeekdayDate(null, 7);

Вы должны сделать это:

var checkouts = checkinf.setDate(checkinf.getDay() + 2); // В следующее воскресенье

...