我正在尝试将一年的“第一天”和“最后一天”(通常为 01/01/yyyy - 31/12/yyyy)更改为我自己定义的日期,即:
第一天: 01/04/yyyy(4 月 1 日)
最后一天:31/03/yyyy(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)
。
还会有(目前有,但需要动态):
prevPrevYear: 2017 年 1 月 4 日 - 18 年 3 月 31 日
上一年: 18 年 1 月 4 日 - 19 年 3 月 31 日
下一年: 2020 年 1 月 4 日 - 21 年 3 月 31 日
nextNextYear: 21/04-31/22
其中日期取自保存日期所在年份的 currYear,nextYear
的余量。
在此示例中,假设用户每年的“津贴”为 40,每天计为 1,因此在保存日期时会从津贴中扣除 1。我有为此工作的所有数学,但需要一些方法让应用程序知道它是否从今年的“津贴”或明年等中扣除,这被写入并存储到数据库中 - 所有数学目前正在工作但无限期滚动,没有任何年终!
我的问题是
我将如何扩展上述内容,以考虑我的用户存储日期时所需的多年跨度?我正在使用 Felgo
和 QML 构建我的应用程序!
最佳答案
您的年份范围似乎是从 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日,它们通常被称为“FY 2019/20”。
关于javascript - 创建与日历年不同的自定义年份? JS/QML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56201598/