如何使用 jQuery 获取所有没有星期日的日期?

How to Fetch all dates without sunday using jQuery?

我想获取一个月的所有日期。采用类似 {2019-9-17} 的格式,但我不想在那天包括星期日。假设我一个月有 30 天,假设我们有 4 个星期日,我只想打印除星期日以外的所有日期。

PS:我正在使用日期选择器,在 jQuery 日期选择器

的帮助下传递月份和年份
  onClose: function() {
     var iMonth = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
     var iYear = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
     $(this).datepicker('setDate', new Date(iYear, iMonth, 1));
     var my_month=(parseInt(iMonth) + 1);
     console.log('datepicker month='+my_month);

      $('.test').empty();  
      var date = new Date();
      var month = date.getMonth();
      var current_date = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
      //console.log(current_date);
      date.setDate(1);
      var all_days = [];
      var week = [];

      while (date.getMonth() == month) {
          // Getting all days from here and storing in array named as all)days();
          var d = date.getFullYear() + '-' + my_month.toString().padStart(2, '') + '-' + date.getDate().toString().padStart(2, '0');
          all_days.push(d);

          date.setDate(date.getDate() + 1);

          //$('.test').append(all_days);
      }
console.log(all_days);

$(document).ready(function() {
    $('#txtDate').datepicker({
      changeMonth: true,
      changeYear: true,
      dateFormat: 'MM yy',
      minDate:0,
      
      onClose: function() {
         var iMonth = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
         var iYear = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
         $(this).datepicker('setDate', new Date(iYear, iMonth, 1));
         var my_month=(parseInt(iMonth) + 1);
         console.log('datepicker month='+my_month);
     
          $('.test').empty();  
          var date = new Date();
          var month = date.getMonth();
          var current_date = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
          //console.log(current_date);
          date.setDate(1);
          var all_days = [];
          var week=[];
          while (date.getMonth() == month) {
              var d = date.getFullYear() + '-' + my_month.toString().padStart(2, '') + '-' + date.getDate().toString().padStart(2, '0');
              all_days.push(d);
         
              date.setDate(date.getDate() + 1);

              $('.test').append(all_days);
          }

          console.log(all_days);
      },
        
      beforeShow: function() {
        if ((selDate = $(this).val()).length > 0) 
        {
           iYear = selDate.substring(selDate.length - 4, selDate.length);
           iMonth = jQuery.inArray(selDate.substring(0, selDate.length - 5), $(this).datepicker('option', 'monthNames'));
           $(this).datepicker('option', 'defaultDate', new Date(iYear, iMonth, 1));
            $(this).datepicker('setDate', new Date(iYear, iMonth, 1));
        }
     },
   });
 });
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script src="myjs2.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.2/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
    <link rel="stylesheet" href="style2.css">
    <style>
    body
{
    font-family:Arial;
    font-size : 10pt;
    padding:15px;
}

.ui-datepicker-calendar {
    display: none;
}

    </style>

   
    <title>yes</title>
</head>
<body>

<form action="process.php" method="post"> 
Select Date : <input type='text' id='txtDate' name="mydate" />
<input type="hidden" name="ak" id="ak">
</form>

<div class="test"></div>


</body>
</html>

您只需更改 while 即可检查 date.getDay() 是否为 !== 0:

while (date.getMonth() == month) {
//Getting all days from here and storing in array named as all)days();
    if (date.getDay() === 0){
        continue;
    }
    var d = date.getFullYear() + '-' + my_month.toString().padStart(2, '') + '-' + date.getDate().toString().padStart(2, '0');
    all_days.push(d);


    date.setDate(date.getDate() + 1);

    //$('.test').append(all_days);
}

我喜欢那个功能getDaysInMonth它很容易理解,所以我扩展了它

/**
 * 
 * @param {int} The month number, 0 based
 * @param {int} The year, not zero based, required to account for leap years
 * @param {Array} Which days to exclude Sunday is 0, Monday is 1, and so on.
 * @returns {Date[]} List with date objects 
 */
function getDaysInMonthWithExclude(month, year, excludeweekdays) {
    var date = new Date(Date.UTC(year, month, 1));
    var days = [];
    while (date.getMonth() === month) {
        if (excludeweekdays.indexOf(date.getDay()) === -1) {
            days.push(new Date(date));
        }
        date.setDate(date.getDate() + 1);

    }
    return days;
}
console.log(getDaysInMonthWithExclude(8, 2019, [0]));