有的时候,原始数据对时间的存储是以秒为单位进行的,比如CPU运行了3600秒。对于这种数据,如果直接拿来生成report给用户的体验不是很好,可读性不强。如果把3600秒转换成1小时,就更能让report使用者接受。
这种转换也不难,主要利用数学三角函数进行就可以了。思路就是用秒数先除以86400(1天等于86400秒),得到的商数就是天数。之后用总的秒数减去折合成天数的描述,剩余部分就可以用了计算小时数。计算思路也是用秒数除以3600(1小时=3600秒),商数部分就是小时数。在以此类推,剩下的秒数除以60的商数就是分钟数,余数就是秒数。
之后可以将所的结果拼接起来,就完成了将以秒为单位的数字转换成分钟,小时,和天数显示的时间。
公式如下:
RunTime = VAR Duration = CPU[RunSeconds]VAR Days = INT ( Duration / 86400 )VAR Hours = INT ( MOD( Duration - ( Days * 86400 ), 86400 ) / 3600 )VAR Minutes = INT ( MOD ( Duration - ( Hours * 3600 ), 3600 ) / 60 )VAR Seconds = ROUNDUP ( MOD ( MOD ( Duration - ( Hours * 3600 ), 3600 ), 60 ), 0 )VAR D = IF ( LEN ( Days ) = 1, "0" & Days, "" & Days )VAR H = IF ( LEN ( Hours ) = 1, "0" & Hours, "" & Hours )VAR M = IF ( LEN ( Minutes ) = 1, "0" & Minutes, "" & Minutes )VAR S = IF ( LEN ( Seconds ) = 1, "0" & Seconds, "" & Seconds )RETURND & ":" & H & ":" & M & ":" & S