判断德国时间冬令时和夏令时

最近在处理时间上碰到一个需求,事实表里的时间是德国时间,需要换算成北京时间,换算的逻辑是夏时制时,北京时间与德国时间相差6个小时,北京时间12点,德国比中国晚6个小时,德国时间是凌晨6点;冬时制时,北京时间与德国时间相差7个小时,北京时间12点,德国比中国晚7个小时,德国时间凌晨5点。

德国每年3月的最后一个星期日到10月的最后一个星期日实行夏时制,其余时间为冬时制。

明确逻辑后,问题就落在了对日期表的日期区分出是夏时制还是冬时制,即是夏令时还是冬令时。冬令时和夏令时的区分就是区分出每年3月的最后一个星期日和10月的最后一个星期日,同一年中在这两个时间之间的就是夏令时,之外的就是冬令时。

可以在日期表里新建两列,一列是每年3月的最后一个星期日,一列是每年10月的最后一个星期日,再建一列判断是冬令时还是夏令时。

日期表里要包含星期几的列来说明那一天是周几,还要有年和月两列:

file

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

file

然后判断冬夏令时:

file

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

file

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

感兴趣的坊友动手试试吧!

file



* PowerPivot工坊原创文章,转载请注明出处!


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


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

Power Pivot工坊