Создать пользовательский год, отличный от календарного года? JS / QML - PullRequest
1 голос
/ 18 мая 2019

Я пытаюсь изменить «первый день» и «последний день» года (обычно 01/01 / гггг - 31/12 / гггг) на мои собственные определенные даты:

Первый день: 01/04 / гггг (1 апреля)

Последний день: 31/03 / гггг (31 марта)

Я нашел похожий вопрос / ответ здесь:

Динамическое изменение года при расчете диапазонов дат с использованием JavaScript

с ответом:

var todayDate = new Date();             //18/05/19
var FYFirst = todayDate.getFullYear();  //2019 
if (todayDate.getMonth() < 3) {         // earlier than april
    FYFirst -= 1;
}
var FYLast = FYFirst + 1;

Но если мои пользователи хранят даты, взятые из квоты, мне нужно продлить их как минимум на 2 года вперед, поэтому приведенный выше код будет currYear (01/04/2019 - 31/03/2020).

Также было бы (в настоящее время, но необходимо по динамике):

prevPrevYear: 01/04/17 - 31/03/18
prevYear: 01/04/18 - 31/03/19

следующий год: 01/04/20 - 31/03/21
nextNextYear: 01/04/21 - 31/03/22

В котором дата берется из допуска currYear,nextYear того года, в который входит сохраненная дата.

В этом примере, скажем, ежегодное «пособие» для пользователя составляет 40, и каждый день считается как 1, поэтому при сохранении даты это вычитает 1 из пособия. У меня есть вся математика, работающая для этого, но нужен какой-то способ, чтобы приложение узнало, вычитается ли оно из «пособия» этого года или т. но катится бесконечно без годового окончания!

Мой вопрос
Как бы я продлил вышеупомянутое, чтобы принять во внимание многолетний период, необходимый, когда мои пользователи хранят даты? Я создаю свое приложение, используя Felgo, работаю с QML!

1 Ответ

2 голосов
/ 19 мая 2019

Похоже, ваш годовой диапазон - с 1 апреля по 31 марта следующего года. Вы можете позвонить с 1 апреля 2019 по 31 марта 2020 года «2019». Вы можете создать простую функцию, чтобы любая дата с 1 января по 31 марта принадлежала предыдущему году, например ::

.

function getMySpecialYear(date) {
  var yr = date.getFullYear();
  var fyStart = new Date(yr, 3, 1);
  return date < fyStart? yr - 1 : yr;
}

[new Date(2019,0,1), // 1 Jan 2019 -> 2018
 new Date(2019,5,1)  // 1 Jun 2019 -> 2019
].forEach(date => console.log(date + ' - ' + getMySpecialYear(date)));

Затем вы можете суммировать дни для определенного диапазона / года и посмотреть, меньше или больше, чем допустимое значение для этого диапазона / года.

В некоторых местах есть аналогичные проблемы, связанные с тем, что финансовый год длится с 1 июля по 30 июня, их часто называют такими вещами, как «FY 2019/20».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...