Bootstrap Daterangepicker вычитание времени

Я знаю, что у daterangepicker есть функция отключения диапазона дат. Но на этот раз мне нужно отключить временной диапазон. А именно с 12:00 до 13:00. Если бы я выбрал 11:00 - 14:00, рассчитанное общее количество часов составило бы 2 часа, исключив 1 час из диапазона времени отключения. Возможен ли этот сборщик? Если нет, есть ли обходной путь? В качестве стартера у меня есть это

$(function() {
    $('input[name="Date2"]').daterangepicker({
        minDate: getCurrentDateToday()+" 8:30 AM",
        dateLimit: { "days": 1},
        timePicker: true,
        timePickerIncrement: 1,
        locale: {format: 'MM/DD/YYYY h:mm A'}
    },
    function(start, end, label)
    {
        var hd = end.diff(start, 'hours');
        var md = end.diff(start, 'minutes');
        var minutesDue = md - (hd*60);
        var hoursDue = hd +"."+minutesDue;
        $('#txtTotalHrs').val(hoursDue);
    });
});

person OneLazy    schedule 10.02.2017    source источник
comment
Ссылка http://http//jsfiddle.net/onelazy/amtxsf0x/ не работает.   -  person Soni Vimalkumar    schedule 10.02.2017
comment
извините, я отредактировал ссылку поменял ее на рабочую   -  person OneLazy    schedule 10.02.2017
comment
Привет, OneLazy, ваша проблема решена ... проверьте отредактированный ответ (вставьте весь сценарий в свой код и попробуйте).   -  person Soni Vimalkumar    schedule 10.02.2017
comment
Спасибо, Сони .. Я ценю твои усилия. ты спасатель!   -  person OneLazy    schedule 13.02.2017
comment
Благодаря тебе, oneLazy, твой вопрос заставил меня приложить усилия ....: P   -  person Soni Vimalkumar    schedule 13.02.2017


Ответы (1)


ИЗМЕНЕНО

$(function() {
  $('input[name="Date2"]').daterangepicker({
      minDate: getCurrentDateToday() + " 8:30 AM",
      dateLimit: {
        "days": 1
      },
      timePicker: true,
      timePickerIncrement: 1,
      locale: {
        format: 'MM/DD/YYYY h:mm A'
      }
    },
    function(start, end, label) {

        var breakStart = "12:00 PM" , breakEnd = "12:30 PM";

      var start_end_diff = (new Date(end) - new Date(start)) / 1000 / 60;

      var break_diff = exclude_BreakTiming(start,end ,breakStart, breakEnd);

      var total_minutes = (start_end_diff - break_diff);

      $('#txtTotalHrs').val(getTimeFromMins(total_minutes));

    });
});

function getTimeFromMins(mins) {
    // do not include the first validation check if you want, for example,
    // getTimeFromMins(1530) to equal getTimeFromMins(90) (i.e. mins rollover)
    if (mins >= 24 * 60 || mins < 0) {
        throw new RangeError("Valid input should be greater than or equal to 0 and less than 1440.");
    }
    var h = mins / 60 | 0,
        m = mins % 60 | 0;
    return moment.utc().hours(h).minutes(m).format("hh:mm");
}

function getCurrentDateToday() {
  var currentDate = new Date();
  var day = currentDate.getDate()
  var month = currentDate.getMonth() + 1;
  var year = currentDate.getFullYear();
  var fullDate = month + "/" + day + "/" + year;
  return fullDate;
}

function exclude_BreakTiming (StartTime , EndTime, BreakStart, BreakEnd){
    StartTime = Date.parse('01/01/2011 ' +StartTime.format('h:mm A'));
  EndTime = Date.parse('01/01/2011 ' +EndTime.format('h:mm A'));

  var breakStart = Date.parse('01/01/2011 '+BreakStart);
  var breakEnd = Date.parse('01/01/2011 '+BreakEnd);

    if((StartTime <= breakEnd) || ((StartTime < breakStart) && (EndTime > breakEnd)))
  {
    return ((breakEnd - breakStart) /1000 /60);
  }else{
    return 0;
  }
}
person Soni Vimalkumar    schedule 10.02.2017
comment
InBreakTime всегда ложь, почему? или я чего-то не замечаю? вот обновленная скрипка: jsfiddle.net/amtxsf0x/2 - person OneLazy; 10.02.2017
comment
в соответствии с вашим обновлением нет необходимости принимать var breakEnd = moment("12:59 PM", "h:mm A");' keep it as it is... and try. InBreakTime will be true if you select Time range 11: 00 до 2: 00`, это даст общее количество часов 2.6 после вычета часов вашего перерыва ... - person Soni Vimalkumar; 10.02.2017
comment
сэр, я попытался выбрать 02/10/2017 8:30 - 02/10/2017 15:30, но он продолжает возвращать 7.0, не снимая 1 час - person OneLazy; 10.02.2017
comment
Спасибо! Я ценю это! - person OneLazy; 10.02.2017
comment
таким образом вы можете узнать, включает ли время ваш перерыв или нет; после этого вычтите 1 час из общего времени (если это правда). (я не могу реализовать это прямо сейчас, так как есть некоторая работа, но так вы можете получить результат) - person Soni Vimalkumar; 10.02.2017
comment
Позвольте нам продолжить это обсуждение в чате. - person Soni Vimalkumar; 10.02.2017