首页 > 解决方案 > 如何使用当天计算 NRF 4-5-4 日历中的 MTD

问题描述

我想知道如何编写逻辑来计算 nrf 454 日历中的 MTD。通常 MTD 很简单,如果今天是 03.09.2020 那么 MTD:从 01.09.2020 到 03.09.2020,所以它是从当月的第一天到当天的日期范围。

问题是 nrf 454 日历似乎无处不在,如果不编写大量 if/case 语句,我找不到任何可以用来创建此逻辑的模式。

这是 nrf 454 日历的示例:nrf 454 日历示例

我的技术也很有限,因为我不能真正使用任何库。我可以使用的是 SQL 和纯 JavaScript。

因此,我正在寻找可以复制的日历背后的逻辑,以便根据当天获取 MTD 日期范围,因此类似于将一天作为参数并返回 MTD 的函数。我不想使用大量的 ifs 对其进行硬编码,除非有人已经在 2018-2022 年间完成了它

标签: sqldatecalendarrangedate-range

解决方案


规则实际上非常简单.. 它们是:

// 4 周有 28 天 // 5 周有 35 天

// 1 一个月将有或 4 周或 5 周 // 454 445 544 是 3 个月的序列,一个季度总是有 35 + 28 + 28 = 91 天 // 学期总是有 182 天 // 一年总是有364 天

// 因为年份有 365 天,所以每年还剩 1 天或 2 天 // 平年 1 天,闰年 2 天。

// 剩余天数达到 7 天的每一年,都需要额外增加一周(一年 53 周)

// 闰年是可以被 4 和 400 整除但不能被 100 整除的年份。

// 一个会计日历可以从任何公历日期开始。此类日历的一周的第一天将始终是第一个日期

如果您在每个边界之间循环计数器,对于时间单位、周、月、季度、学期年(根据进度数组放置月份),您只需要 IF.. 一个用于月份进度,另一个用于闰年。

我自己在做一个实现,我希望我能在一段时间内完成


推荐阅读