javascript - 创建与日历年不同的自定义年份? JS/QML

标签 javascript qt date qml

我正在尝试将一年的“第一天”和“最后一天”(通常为 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/

相关文章:

javascript - 大多数共享主机是否处理 gzip 压缩文件?

c++ - 段错误仅在发布配置下发生

c# - .NET 中的日期时间溢出

java - 在 Java 错误中添加日期

ios - 在 Swift 中进行简单的 Date() 操作时崩溃

javascript - 为什么这个 PDF javascript 日期每年只被错误计算一次?

javascript - 在nodejs上使用带有javascript的正则表达式查找html属性并在其值前面添加一些内容

javascript - 将图像比例调整为浏览器大小的算法

.net - QT4 与 .Net 相比如何

c++ - 如何在给定 PID 的情况下隐藏进程的控制台?