在OSI PI中,我一直在尝试计算两个系统之间的系统时间冲突,一个在夏令时,另一个没有。
我遇到过似乎有用的公式,但我不知道怎么做。我虽然在excel中创建了类似的功能并且昨晚也取得了类似的成功,但是我没有保存我的excel文件,也无法在excel中复制成功。
以下是PI公式:
Floor(Float('*'-'1-jan') / 3600) Mod 24 <> Hour('*')
对于那些不熟悉PI的人:
我修改了公式以允许输入测试日期:
Floor(Float(TestTime-'1-jan') / 3600) Mod 24 <> Hour(TestTime)
这允许我输入任何日期时间来测试(仅限于当前年份,因为'1-jan'是当年的开始)。
除了在3月11日凌晨2:00到凌晨2:59之间出现错误,它才有效。
我运行此系统的系统不是夏令时。
我的问题是:为什么这样做?
当前不适用的excel版本:
=MOD(FLOOR((VALUE(A2-DATE(YEAR(A2),1,1)) *60*60*24) / 3600,1),24) <> HOUR(A2)
=MOD(FLOOR((VALUE(A2-("Jan1"+0)) *60*60*24) / 3600,1),24) <> HOUR(A2)
答案 0 :(得分:0)
从你在3/11/18收到错误的事实来看,我假设你在美国,错误是3月11日(美国夏令时:2018- 03-11至2018-11-04)而非欧洲(2018-03-25至2018-10-28)或澳大利亚西南部(2017-10-01至2018-04-01)。
在PI中,您获得自年份开始以来的秒数 - 除以3600(获得小时数)和Floor
(获得整个小时数),然后{{1}删除所有完整的24小时循环。然后,将其与您检查的时间进行比较:在夏令时期间,有一个“缺失”的时间。小时,(23小时工作日),当你再次离开时(25小时工作日)重新加入。
Excel将日期视为天,而不是秒。因此,mod 24
会提供"2018-01-01 12:00" - "2018-01-01 00:00"
而不是0.5
。尝试检查43200
的结果 - 是=ROUND("2018-03-12 12:00"-"2018-03-10 12:00",3)
还是2.000
?如果是前者,您需要找到另一种方法来执行此操作。如果后者,请使用1.958