如何根据动态结束年度计算周年?

时间:2016-01-18 19:22:58

标签: java algorithm api logic

我有以下问题: 我需要得到一个会计年度的一周,但问题是我可以有一个充满活力的财政年度。 例如,不是考虑我的财政年度12月31日结束,而是在我的财政年度结束时将是8月15日。

所以我应该考虑我的一年来自: 8月16日,(CurrentYear -1)直到8月15日,CurrentYear。

这样,我需要创建一个传递一些日期的方法,比如8月18日,(CurrentYear-1),这个方法应该返回一年中的一周。 在这种情况下,它将是1。

我知道使用Java,我可以通过以下方式获得一周:

Calendar cal = Calendar.getInstance();
cal.setTime(selectedDate.toDate());
int weekNumber = cal.get(Calendar.WEEK_OF_YEAR);

我想知道是否有一些API根据动态"年底"进行同样的数学计算,或者可能对如何做到这一点有所了解。

1 个答案:

答案 0 :(得分:0)

推荐:

首先定义会计年度第一个日期的参考周

Calendar cal = Calendar.getInstance();
cal.setTime(fiscalStartDate.toDate());
int referenceWeek = cal.get(Calendar.WEEK_OF_YEAR);

对于任何指定日期,会计周将为:

cal.setTime(fiscalGivenDate.toDate());
int calendarWeek = cal.get(Calendar.WEEK_OF_YEAR)
int fiscalWeek = (calendarWeek > referenceWeek) ? calendarWeek- referenceWeek : (calendarWeek + <numberOfWeeks>) - referneceWeek;

我在这里使用了伪代码,找到&#34; numberOfWeeks&#34;,检查calculate number of weeks in a given year。这个调整的原因是你必须在日期转换年份后纠正(从例如52到1),但你需要知道年份是52周还是53周。

所以,不优雅,但日历的东西很少是: - )