Excel 2010:夏令时-计算任何给定日期的时间戳之间的小时数

史蒂夫·泰勒(Steve Taylor)

我有一张检查表,它可以交叉检查各个水测量点,并从另一个系统读取大约30个不同仪表的平均费率。我已经自动执行了此检查表,因此VBA脚本可以在给定的日期范围内(通常一次为一个月)一次又一次地运行该表,并将结果提取到另一页上。

英国昨天(2015年10月25日,星期日)实行夏令时,这给我带来了很多问题。所有计量的读数都给了我“每小时平均流量”,我一直在乘以24以得出每日流量。但是我现在意识到,每年两天,使用24是错误的乘数。

因此,给定Start_Date为25/10/2015 00:00和End_Date为26/10/2015 00:00,我如何才能使Excel计算两者之间的正确小时数,这也将适用于所有其他日期年?我希望能够在任何给定时间段内可靠地运行此检查表,并每天根据其是否有23、24或25小时来适当地计算每日总数。到目前为止,我尝试过的每次转换都将两个时间戳之间的差异返回为“ 1”,因为Excel将25h视为一天。

编辑:根据记录,英国在3月和10月的最后一个星期日更改。

史蒂夫·泰勒(Steve Taylor)

在没有提供更好的方法的情况下,我现在应用了以下解决方案:

=Flowrate*(24+IF(AND(EOMONTH(Start_Date,0)-Start_Date<7,WEEKDAY(Start_Date,3)=6),CHOOSE(MONTH(Start_Date),0,0,-1,0,0,0,0,0,0,1,0,0),0))

怎么运行的

简而言之,向后工作:

CHOOSE(MONTH(Start_Date),0,0,-1,0,0,0,0,0,0,1,0,0)

对于给定的Start_Date,检查它是一年中的哪个月,如果是三月,则返回-1小时的偏移量;如果是十月,则返回+1小时的偏移量。

WEEKDAY(Start_Date,3) = 6

对于给定的Start_Date,检查当前日期是否为星期日,如果是,则返回TRUE。

EOMONTH(Start_Date,0)-Start_Date < 7

对于给定的Start_Date,请检查距月底是否还不到7天。如果是,则返回TRUE。

AND(EOMONTH(),WEEKDAY()=6)

检查以上两个条件。如果是星期日,则在该月的最后六天内(即不再有星期日),返回TRUE。

IF(AND(),CHOOSE(),0)

如果以上条件全部为TRUE,则调用CHOOSE以返回给定月份的最后一个星期日的正确偏移量。否则,返回零。返回的偏移量加到24以得出给定日期的小时数,然后可以将其与小时流量相乘以得出当天的总数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何确定夏令时生效的给定日期?

来自分类Dev

如何在Excel中的两个给定日期之间每2小时列出所有日期

来自分类Dev

如何检查给定日期是否为夏令时?

来自分类Dev

夏令时的EST时间转换

来自分类Dev

约旦的乔达时间夏令时

来自分类Dev

python时间模块:夏令时

来自分类Dev

需要识别夏令时纪元时间

来自分类Dev

Jboss Java 日期夏令时

来自分类Dev

UTC 日期不考虑夏令时

来自分类Dev

在计算之间的周数时避免夏令时

来自分类Dev

MySql中的时间戳和夏令时[dst]

来自分类Dev

日期计算-夏令时(DST)和时区问题-土耳其

来自分类Dev

如何找到夏令时开始的日期和时间

来自分类Dev

夏令时转换日期时间的未来列表(英国)

来自分类Dev

夏令时开始时的时间无效

来自分类Dev

存储事件时间,夏令时发出UTC

来自分类Dev

UTC 和夏令时 - 作业时间表

来自分类Dev

日期错误地显示为英国夏令时

来自分类Dev

夏令时更改为绝对日期

来自分类Dev

夏令时的plusHours和plusDays之间的JodaTime差异

来自分类Dev

熊猫时间序列时间戳+/-(正负)小时,用于夏令时(dst)

来自分类Dev

夏令时计算

来自分类Dev

如何检查给定日期是否为夏令时日期?

来自分类Dev

确定夏令时是否适用于特定日期

来自分类Dev

在观察夏令时的同时解析本地时间(到UTC)中的有序时间戳

来自分类Dev

我们12月有一个小时的时间(夏令时)吗

来自分类Dev

检索夏令时更改的第一个小时-GNU日期

来自分类Dev

使用python确定时间戳是否在夏令时之下

来自分类Dev

考虑到夏令时将EST时间戳转换为GMT