4-4-5日历方法基于Java8代码
4-4-5 Calendar approach based on Java 8 Code
对于我在 Power BI 中的会计日历,我目前正在尝试实施 4-4-5 approach。
我们的日历适用于 4-4-5 周的季度。由于每年只有364天,所以几年后一定有53周的一年。因此,12 月有 6 周而不是 5 周。
不幸的是,仍然没有基于 DAX 的方法。
然而,在另一个 post here 中,我发现了一个 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
向下。
对于我在 Power BI 中的会计日历,我目前正在尝试实施 4-4-5 approach。
我们的日历适用于 4-4-5 周的季度。由于每年只有364天,所以几年后一定有53周的一年。因此,12 月有 6 周而不是 5 周。 不幸的是,仍然没有基于 DAX 的方法。 然而,在另一个 post here 中,我发现了一个 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
向下。