Member 10212775 Ответов: 2

Диапазон выбора диапазона дат для финансового года


У меня есть проблема с отображением текущего финансового года и последнего финансового года в Bootstrap date range picker. мне нужно, чтобы этот финансовый год был с апреля 2016 года по март 2017 года. Но в настоящее время этот финансовый год показывает апрель 2017 - Март 2018 года. Но январь 2017 года подходит под последний финансовый год по отбору.

//Date range as a button
   $('.daterange-btn').daterangepicker({
       ranges: {
           'Today': [moment(), moment()],
           'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
           'Last 7 Days': [moment().subtract(6, 'days'), moment()],
           'Last 30 Days': [moment().subtract(29, 'days'), moment()],
           'This Month': [moment().startOf('month'), moment().endOf('month')],
           'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
           'This Financial Year': [moment().month(new Date(startDate).getMonth()).startOf('month'), moment().month(new Date(startDate).getMonth()).startOf('month').subtract(1, 'days').add(1, 'year')],
           'Last Financial Year': [moment().month(3).startOf('month').subtract(1, 'year'), moment().month(3).startOf('month').subtract(1, 'days')]

       },
       startDate: moment().subtract(29, 'days'),
       endDate: moment()
   }, function (start, end) {
       Search(start.format('DD-MMM-YYYY'), end.format('DD-MMM-YYYY'));
   });


Что я уже пробовал:

Я не могу решить эту проблему пожалуйста помогите

2 Ответов

Рейтинг:
10

Richard Deeming

Неудивительно, учитывая ваши определения диапазона:

'This Financial Year': 
[
    moment() // 2017-01-16
        .month(new Date(startDate).getMonth()) // 2017-04-16
        .startOf('month'), // 2017-04-01
    
    moment() // 2017-01-17
        .month(new Date(startDate).getMonth()) // 2017-04-16
        .startOf('month') // 2017-04-01
        .subtract(1, 'days') // 2017-03-31
        .add(1, 'year') // 2018-03-31
],
'Last Financial Year': 
[
    moment() // 2017-01-16
        .month(3) // 2017-04-16
        .startOf('month') // 2017-04-01
        .subtract(1, 'year'), // 2016-04-01
    
    moment() // 2017-01-16
        .month(3) // 2017-04-16
        .startOf('month') // 2017-04-01
        .subtract(1, 'days') // 2017-03-31
]

Вам нужно проверить, находится ли текущий месяц до начала финансового года. Если это так, то оба диапазона сдвигаются назад на год.
var currentMonth = new Date().getMonth();
var financialYearStartMonth = new Date(startDate).getMonth();
var financialYearStartDate = moment().month(financialYearStartMonth).startOf('month');
if (currentMonth < financialYearStartMonth) {
    financialYearStartDate = financialYearStartDate.subtract(1, 'year');
}

$('.daterange-btn').daterangepicker({
    ranges: {
        ...
        'This Financial Year': [financialYearStartDate, financialYearStartDate.add(1, 'year').subtract(1, 'days')],
        'Last Financial Year': [financialYearStartDate.subtract(1, 'year'), financialYearStartDate.subtract(1, 'days')]
    },
    ...


Member 10212775

большое вам спасибо за эту идею. я изменил код на

var thisStart = moment () / / 2017-01-16
.month (новая дата (startDate). getMonth ()) / / 2017-04-16
. startOf ('месяц');

var thisEnd = moment () / / 2017-01-17
.month (новая дата (startDate). getMonth ()) / / 2017-04-16
. startOf ('месяц') / / 2017-04-01
. вычесть(1, 'дни') / / 2017-03-31
. добавить(1, 'год');


if (currentMonth < financialYearStartMonth) {
thisStart = thisStart. subtract(1, 'year');
thisEnd = thisEnd. subtract(1, 'year');
}



// Диапазон дат в виде кнопки
$('.периода-БТН').daterangepicker({
диапазоны: {
'Today': [moment (), moment()],
"Вчера": [момент().вычитание(1, 'дней'), момент().вычитание(1, 'дней')],
'Last 7 Days': [moment (). вычесть(6, 'days'), moment()],
'Последние 30 дней: [момент().вычитание(29, 'дней'), момент()],
'В этом месяце': [момент().startOf('месяц'), момент().конца('месяц')],
'В прошлом месяце': [момент().вычитание(1, "месяц").startOf('месяц'), момент().вычитание(1, "месяц").конца('месяц')],
"Этот финансовый год": [thisStart, thisEnd]

},

startDate: moment (). subtract(29, 'days'),
дата окончания: момент()
},
функция (начало, конец) {
Поиск(пуск.формат('ДД-МММ-гггг'), конец.формат('ДД-МММ-гггг'));
});

и теперь он работает нормально

Рейтинг:
0

priyanka456

почему бы вам не попробовать jQuery datepicker?Здесь мы можем предоставить диапазон года и месяца