我想计算PDI中各种交易的活动时间总和(HH:mm:ss)。例如,考虑3个活动时间:1)活动1 - 01:22:03,2)活动2 - 01:10:11和3)活动3 - 00:22:20。所有这些时间的总和应该是02:54:34,但结果显示负值。我该如何改进?
我几乎偶然遇到了你的问题(和解决方案)。值得详细解释一下。
日期字段不适用于持续时间。他们定义了瞬间。如果你定义一个没有日期部分的日期字段,你实际上是在1970年1月1日将它定义为一个瞬间,这是Unix时间的开始。
所以,如果你拿第一个时间戳,当你将01:22:23设置为日期字段时,你实际上将它设置为“1 Jan 1970 01:22:23”。你希望这个字段以秒为单位返回4923它的值(例如,在Javascript上使用getTime())。这对你的计算很有帮助;然后你可以添加它们,并重新格式化显示。
但是,如果在设置日期值时未指定时区,则日期字段将使用LOCAL时区设置来定义该时间。
因此,如果您在纽约时区,将01:22:23定义为格式为HH:mm:ss的日期字段,则返回“1969年12月31日6:22:23 UTC”,以秒为单位返回22923。
如果您在1970年1月1日在巴黎或其他比UTC更早的城市,您的部分或全部持续时间可能会返回负值。
我说我偶然遇到它的原因是因为我总部设在伦敦,冬天应该是UTC。然而,奇怪的是,1970年并非如此(参见UNIX timestamp(0): Europe/London returns UTC+1)
所以,在计算伦敦时区的时间戳时,我得到了:
Unix时间的本地时间,秒
1:22:03, 1323
1:10:11, 611
0:22:20, -2260
这些数字加起来为-326。
我的建议:
黑客解决问题(我不推荐):