最近在处理时间上碰到一个需求,事实表里的时间是德国时间,需要换算成北京时间,换算的逻辑是夏时制时,北京时间与德国时间相差6个小时,北京时间12点,德国比中国晚6个小时,德国时间是凌晨6点;冬时制时,北京时间与德国时间相差7个小时,北京时间12点,德国比中国晚7个小时,德国时间凌晨5点。
德国每年3月的最后一个星期日到10月的最后一个星期日实行夏时制,其余时间为冬时制。
明确逻辑后,问题就落在了对日期表的日期区分出是夏时制还是冬时制,即是夏令时还是冬令时。冬令时和夏令时的区分就是区分出每年3月的最后一个星期日和10月的最后一个星期日,同一年中在这两个时间之间的就是夏令时,之外的就是冬令时。
可以在日期表里新建两列,一列是每年3月的最后一个星期日,一列是每年10月的最后一个星期日,再建一列判断是冬令时还是夏令时。
日期表里要包含星期几的列来说明那一天是周几,还要有年和月两列:

每年3月最后一个星期日的公式里首先新建一个var变量a表示当前行的年份,然后maxx公式在筛选出的每年3月周日的表里返回3月的最后一个星期日,返回的值既要是3月最后一个星期日还要和所在行的日期是同一年份,同样的逻辑算出每年10月最后一个星期日的计算列。

然后判断冬夏令时:

判断出冬夏令时后,时间换算就迎刃而解了~~
步骤分开写方便理解,但是分三列计算会影响性能,所以把这三个计算列合在一起写:

本场景处理的关键是确定3月最后一个星期日和10月最后一个星期日,类似的在处理某月最后一个周几的时候使用var变量先确定月份所在的是哪一年,然后在筛选的某月周几的表里返回最后一个周几的日期,得出时间节点后就可以做其他的判断了(如冬夏令时)。
感兴趣的坊友动手试试吧!

* PowerPivot工坊原创文章,转载请注明出处!
延伸阅读:
如何使用DAX函数计算上年值如何处理按列排序引起的问题
如何在Power BI中求解多列数据最小值问题
Path函数:按人员架构核算销售额(上篇)
按人员架构核算销售额(下篇)
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。

长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

免责声明:文章内容来自互联网,本站仅提供信息存储空间服务,真实性请自行鉴别,本站不承担任何责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:判断德国时间冬令时和夏令时-2021年德国冬令时是几月几号 https://www.zentong.com/a/p/142514.html