java - 4-4-5 基于Java 8代码的日历方法

标签 java excel powerbi dax powerpivot

对于 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 周。

最佳答案

我无法为 PowerPivotDAX 提供帮助。但我可以告诉您如何使用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)

示例:

enter image description here

如您所见,年份是从 A2 向下的。计算第一个 ISO 日历周的星期一的公式位于 B2 下方。计算最后一个 ISO 日历周的星期日的公式在 C2 中向下。而当年 ISO 周数的计算公式是 D2 向下。

关于java - 4-4-5 基于Java 8代码的日历方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61247927/

相关文章:

java - vaadin javascript

java - JDBC 错误 :08S01 sometimes happens

excel - VBA 将日期参数传递给 SQL Server 存储过程

java - mockito - 检查条件是否通过并调用不返回任何内容的方法

java - 无法在android中保存实例状态

python - 我想根据 pandas 中的另一列数据添加新列

excel - 数组不考虑在 VBA 中创建的字符串

powerbi - Snowflake 和 OLAP 解决方案

powerbi - Power BI 嵌入式报表选择器

powerbi - 使用 SAS token Power BI 连接到 Azure Data Lake Storage Gen 2