创建自定义年份,不同于日历年度? JS / QML

时间:2019-05-18 18:06:34

标签: javascript qt date qml

我正在尝试将一年的“第一天”和“最后一天”(通常是01/01 / yyyy-31/12 / yyyyy)更改为我自己定义的日期,即:

第一天:yyyy(04月1日)

过去一天:每年31/03 / yy(3月31日)

我在这里找到了类似的问题/答案:

Dynamically change the year when calculating date ranges using 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)

也将存在(当前存在,但需要动态):

上一个年份:17/04/17-18/03/18
上一年: 18/01/04/19-31/03 /

下一年: 20/01/04-31/03/21
nextNextYear::21/04/21-31/03/22

其中日期是从保存日期所属的任何年份的currYear,nextYear的允许中提取的。

在此示例中,假设用户每年的“津贴”为40,每天算作1,因此在保存日期时,将从津贴中减去1。我已经完成了所有的数学运算,但是该应用需要某种方式来知道它是从今年的“津贴”还是从明年的收益中扣除,并将其写入并存储到数据库中-目前所有的数学运算都在起作用但是无限期滚动,没有任何年度结局!

我的问题是
我将如何扩展上述范围,以考虑到用户存储日期时需要的多年跨度?我正在使用Felgo和QML来构建我的应用程序!

1 个答案:

答案 0 :(得分:2)

您的年份范围似乎是第二年的4月1日至3月31日。您可以将2019年4月1日至2020年3月31日称为“ 2019”。您可以创建一个简单的函数,以使1月1日至3月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)));

然后可以对特定范围/年的天数求和,以查看总数是否小于或大于该范围/年的限额。

有些地方存在类似的问题,即财政年度从7月1日到6月30日,通常被称为“ 2019/20财年”。