数学计算财政年度 5-4-4 时间表
Posted
技术标签:
【中文标题】数学计算财政年度 5-4-4 时间表【英文标题】:Mathematically calculating the fiscal year 5-4-4 schedule 【发布时间】:2018-09-25 02:02:25 【问题描述】:我正在尝试计算财政年度并返回 5-4-4 时间表上一周结束的日期。
例如财政年度从 1 月 1 日开始,然后我将返回 5 周、4 周和另外 4 周的日期。然后重复 5 周、4 周、4 周,直到财政年度结束,然后大概重新开始。
您将如何以数学或编程方式进行此操作?
我想出了一个减法,但想看看有没有人有更好的解决方案:
52 - 47 = 5 | February 5th, 2018
52 - 43 = 9 | March 5th, 2018
52 - 39 = 13 | April 2nd, 2018
52 - 34 = 18 | May 7th, 2018
52 - 30 = 22 | June 4th, 2018
52 - 26 = 26 | July 3rd, 2018
52 - 21 = 31 | August 7th, 2018
52 - 17 = 35 | September 4th, 2018
52 - 13 = 39 | October 2nd, 2018
52 - 8 = 44 | November 6th, 2018
52 - 4 = 48 | December 4th, 2018
52 - 0 = 52 | January 1st, 2019
【问题讨论】:
您是否正在寻找任何特定语言的这个?如果您将此作为一个数学问题来问,那么它可能更适合 Math.SE 而不是这里。 你是如何从数学上计算出你的样本的? @SilvioMayolo 用 C# 编写会很有帮助 【参考方案1】:最终自己解决了这个问题。在互联网上找不到任何东西。
解决方案: 我的算法最终使用了减法,但对我的问题进行了修改。
int[] pattern = 5, 4, 4; // The week pattern
DateTime begin = new DateTime(2018, 1, 1);
DateTime currentDate = DateTime.Today; // 9-27-2018
// Get the total amount of weeks between the 2 days. Add 1 for including the end day
var currentWeek = (currentDate.Date.Subtract(beginTime).TotalDays + 1) / 7;
var counter = 0;
while (currentWeek > 0)
if (counter > 2)
counter = 0;
currentWeek = currentWeek - pattern[counter];
return currentWeek == 0;
然后返回一个布尔值,判断当前日期是否是 5-4-4 时间表中某个时间段的结束。在这种情况下,它会返回 false,因为 2018 年 9 月 27 日不是具有 5-4-4 模式的财政日历结束期间的一天。
【讨论】:
以上是关于数学计算财政年度 5-4-4 时间表的主要内容,如果未能解决你的问题,请参考以下文章