阻止周末和节假日/特殊日期

Block Weekends and Holidays/Special Date

提问人:Royal Fleur 提问时间:5/28/2023 最后编辑:AnonymousRoyal Fleur 更新时间:6/1/2023 访问量:34

问:

我目前正在使用日期选择器作为基于此处代码的交货日历

我不是编码员,对jquery知之甚少。

我想出了以下小提琴,效果还不错

但是,我希望能够阻止周末和节假日。

如何将其添加到我的日期选择器中?

此外,显示的时间似乎偏离了 1 小时,我不知道为什么

我的日期选择器代码如下

jQuery.noConflict();
jQuery(document).ready(function() {

  // Jquery Datepicker
  var setDate = moment.tz  ('America/Los_Angeles');
  jQuery("#getdate").datepicker({
    minDate: checkTime(), // set min date based on LA timezone time
    dateFormat: 'dd-mm-yy',
    defaultDate: setDate.format('dd-mm-yy'), // get from moment above
    numberOfMonths: 1,
    buttonText: "Choose Date",
    showButtonPanel: true
  });

  function checkTime(setminDate) {
    var LATime;
    (NZTime = function() {
      LANow = moment.tz('America/Los_Angeles').format('dddd MMMM Do YYYY HH:mm:ss');
      jQuery("#msg1").text('In LA it\'s currently ' + LANow);
    })();
    setInterval(NZTime, 1000);

    var currentTime = moment.tz('America/Los_Angeles');
    var extra = moment().format('YYYY-MM-DD') + ' ';
    var start_time = moment(extra + '08:00'); // NZ time
    var end_time = moment(extra + '18:00'); // NZ time

    jQuery("#startTime").html('Start Time is: ' + start_time.format('HH:mm'));
    jQuery("#endTime").html('End Time is: ' + end_time.format('HH:mm'));
    if (moment(currentTime).isBetween(start_time, end_time)) {
      //console.log('TRUE');
      setminDate = '+0d';
      jQuery("#msg").html('It\'s before the cutoff time - you can book today!');
    } else {
      //console.log('FALSE');
      setminDate = '+1d';
      jQuery("#msg").html('It\'s AFTER the cutoff time - please book for tomorrow');
    }
    return setminDate; // ADD RETURN STATEMENT
  }

}); // end doc ready

感谢您的帮助和时间

beforeShowDay: $.datepicker.noWeekends 不起作用

jQuery DatePicker 时区

评论


答:

0赞 zabuli 6/1/2023 #1

您必须在代码中更改以下部分:

  var holidays = ["2023-06-07","2023-06-14"]; //***add your holidays
  
  jQuery("#getdate").datepicker({
    minDate: checkTime(), // set min date based on LA timezone time
    dateFormat: 'dd-mm-yy',
    defaultDate: setDate.format('dd-mm-yy'), // get from moment above
    numberOfMonths: 1,
    buttonText: "Choose Date",
    showButtonPanel: true,
//***add this part
    beforeShowDay: function(date){
    var datestring = jQuery.datepicker.formatDate('yy-mm-dd', date);
    var day = date.getDay();
    return [ holidays.indexOf(datestring) == -1 && day != 0 && day != 6 ]
}
//***
  });

此外,显示的时间似乎偏离了 1 小时,我不知道为什么 -> 对不起,我不明白你的意思,也许你能展示截图吗?我只在小提琴中看到这些时间,它们看起来符合预期:

enter image description here