Tibco Spotfire - Real 中以秒和毫秒为单位的时间,转换为一天中的时间

问题描述

我有一个以秒为单位的十进制格式的时间列表,我知道该系列的开始时间。我想将它转换为一天中的时间,并应用开始时间的偏移量。必须有一个简单的方法来做到这一点,我真的很想念!

示例源数据:

\源文件名:260521-11_58 \录制自 26.05.2021 11:58 \频道:1 \扫描速率:101 毫秒 = 0.101 秒 \变量1:n1(rpm) \内部标识符:63 \信息1: \信息2: \信息3: \信息4: 0.00000 3722.35645
0.10100 3751.06445
0.20200 1868.33350
0.30300 1868.36487
0.40400 3722.39355
0.50500 3722.51831
0.60600 3722.50464
0.70700 3722.32446
0.80800 3722.34277
0.90900 3722.47729
1.01000 3722.74048
1.11100 3722.66650
1.21200 3722.39355
1.31300 3751.02710
1.41400 1868.27539
1.51500 3722.49097
1.61600 3750.93286
1.71700 1868.30334
1.81800 3722.29224

开始时间和日期是 26.05.2021 11:58,LH 列是以秒为单位的经过时间,列名称为 [Time] 。所以我只想将十进制/实数转换为时间或时间跨度,并为其添加开始时间。

我尝试了很多非常笨拙且最终有缺陷的方法 - 下面的方法有效,但忽略了毫秒。

TimeSpan(0,Integer(Floor([Time])),[Time] - Integer(Floor([Time])))

最后一部分仅用于获得毫/微秒,但不是上述的一部分。

解决方法

您的公式并没有真正忽略毫秒,您使用时间的小数部分(以秒为单位)作为毫秒,因此返回的值小于格式掩码。

您需要将秒转换为毫秒,所以这样的事情应该可以工作

TimeSpan(0,Integer(Floor([Time])),([Time] - Integer(Floor([Time]))) * 1000)

要将其添加到时间,这会起作用

DateAdd(Date("26-May-2021"),TimeSpan(0,Integer([Time]),([Time] - Integer([Time])) * 1000))

您需要将列格式设置为

dd-MMM-yyyy HH:mm:ss:fff