对于 Power BI 中的财务日历,我目前正在尝试实现 4-4-5 approach .
我们的日历适用于 4-4-5 周的季度。由于每年只有 364 天,所以几年后一定会有 53 周的一年。结果,12 月有 6 周,而不是 5 周。 不幸的是,仍然没有基于 DAX 的方法。 然而,在另一篇文章中,我发现了一个 JAVA 代码,它可能确定一年是否有 53 周: calculate number of weeks in a given year
private static long getNumberOfWeeksInYear(LocalDate date) {
LocalDate middleOfYear = date.withDayOfMonth(1).withMonth(6);
return middleOfYear.range(WeekFields.ISO.weekOfWeekBasedYear()).getMaximum();
}
public static void main(String[] args) {
for (int year = 2000; year < 2400; year++) {
long numberOfWeeks = getNumberOfWeeksInYear(LocalDate.of(year, 1, 1));
if (numberOfWeeks != 52) {
System.out.println(year + " has " + numberOfWeeks + " weeks");
}
}
}
你们有人知道如何将代码翻译成 Dax 吗?
我们的财政日历并非基于公历。 今年从 2019 年 12 月 30 日开始,到 21 年 1 月 3 日结束。今年有 53 周。
最佳答案
我无法为 PowerPivot
和 DAX
提供帮助。但我可以告诉您如何使用Excel
公式获取这些信息。
给定 A2
中的年份,您可以使用以下公式计算该年第一个 ISO
日历周的星期一:
=DATE($A2,1,1)-WEEKDAY(DATE($A2,1,1),3)+(ISOWEEKNUM(DATE($A2,1,1)-WEEKDAY(DATE($A2,1,1),3))<>1)*7
您可以使用以下公式计算当年最后一个 ISO
日历周的星期日:
=DATE($A2+1,1,1)-WEEKDAY(DATE($A2+1,1,1),3)+(ISOWEEKNUM(DATE($A2+1,1,1)-WEEKDAY(DATE($A2+1,1,1),3))<>1)*7-1
鉴于放置在 C2
中的最后一个 ISO
日历周的星期日,以下公式计算该年的 ISO
周数:
=ISOWEEKNUM($C2)
示例:
如您所见,年份是从 A2
向下的。计算第一个 ISO
日历周的星期一的公式位于 B2
下方。计算最后一个 ISO
日历周的星期日的公式在 C2
中向下。而当年 ISO
周数的计算公式是 D2
向下。
关于java - 4-4-5 基于Java 8代码的日历方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61247927/