首页 > 解决方案 > 创建自定义年份,不同于日历年?JS/QML

问题描述

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

第一天: 01/04/yyyy(4 月 1 日)

最后一天: 31/03/yyyy(3 月 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).

还会有(目前存在,但需要动态):

上一页上一页: 01/04/17 - 31/03/18
上一页: 01/04/18 - 31/03/19

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

其中日期取自currYear,nextYear保存日期所在年份的津贴。

在此示例中,假设用户每年的“津贴”为 40,并且每天计为 1,因此在保存日期时会从津贴中扣除 1。我有所有的数学工作,但需要一些方法让应用程序知道它是否从今年的“津贴”或明年等中扣除,这是写入并存储到数据库中 - 所有的数学目前正在工作但无限期滚动,没有任何年终!

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

标签: javascriptqtdateqml

解决方案


您的年份范围似乎是次年的 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”之类的东西。


推荐阅读