我正在尝试将一年的“第一天”和“最后一天”(通常是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来构建我的应用程序!
答案 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财年”。