java - 4-4-5 基于 Java 8 代码的日历方法
问题描述
对于我在 Power BI 中的会计日历,我目前正在尝试实施4-4-5 方法。
我们的日历适用于 4-4-5 周的季度。由于每年只有 364 天,因此几年后必须有 53 周的年份。因此,12 月有 6 周而不是 5 周。不幸的是,仍然没有基于 DAX 的方法。然而,在这里的另一篇文章中,我发现了一个 JAVA 代码,它可能确定一年是否有 53 周: 计算给定年份的周数
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 吗?
我们的财政日历不是基于公历开始的。今年从 30.12.19 开始,到 03.01.21 结束。今年有 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
给定放在 中的最后一个ISO
日历周的星期日C2
,以下公式计算该ISO
年的周数:
=ISOWEEKNUM($C2)
例子:
如您所见,这些年是从A2
下往上的。计算第一个日历周的星期一的公式向下ISO
放置。B2
计算上一个ISO
日历周的星期日的公式是C2
向下的。计算当年ISO
周数的公式是D2
向下的。
推荐阅读
- r - 将 3 个稀疏矩阵汇总为一个完整矩阵
- java - 如何修复此错误 AAPT2 错误:检查日志以获取详细信息?
- python - 如何在注册时获取自定义字段?
- python - 在 tkinter 中通过 networkx 构建图表并读取条目值
- python - 为什么 n = int() 的位置(def 的外部和内部)很重要?
- java - 如何将 jstl 表单输入与 foreach 绑定?
- c# - 通过脚本在屏幕上平滑移动游戏对象,就像 Unity 中的动画一样
- apache-spark - 无法使用 java 类在 spark-cassandra-connector 中进行映射
- python - 如何修复“将系列转换为
“熊猫的问题? - sql-server - 如何根据长度从特殊字符之前的列中删除字符