如何在 Crystal Reports 2008 中将表示时间的小数转换为实际时间?例如:“1.5”代表 1:30

How do I convert a decimal number representing time to actual time in Crystal Reports 2008? Ex: "1.5" represents 1:30

我正在尝试编辑现有的 Crystal 报告,该报告显示工单的时间限额。预算时间/实际时间/剩余时间类型交易。

这些字段显示为未从报告的数据字段正确转换时间。制作报告的人已经有了一些公式,但我不确定它在做什么。

公式:标准时间

Stringvar array Std_Time := split(replace(cstr({WOMNT_CARD.STANDARD_HOURS_DURATION}),",",""),".");

val(Std_Time[1])*60+val(Std_Time[2])

报告中使用的字段是@Standard Time (Number)的总和。

如何解决此问题以便正确转换这些数字?

您发布的公式执行以下操作:

首先它使用cstr函数将{WOMNT_CARD.STANDARD_HOURS_DURATION}字段的数据类型转换为字符串,结果用replace函数去掉逗号,结果字符串是以点号为分隔符分割成数组

因此,对于值 1.5,Std_Time 变量将包含以下内容

Std_Time[1] → 1

Std_Time[2] → 5

最后,它通过将第一个索引的第一个值乘以 60 并加上第二个索引的值来计算结果。值 1.5 变为 1 * 60 + 5 = 65

如果1.5必须代表1:30那么最后一行必须变成

val(Std_Time[1]) * 60 + 60 * val(Std_Time[2]) / 10

因为 60 * 5 / 10 = 30

或者为了简单起见,您可以使用以下内容

60 * val(replace(cstr({WOMNT_CARD.STANDARD_HOURS_DURATION}),",",""))

因为 60 * 1.5 = 90