【问题标题】:Tibco Spotfire - time in seconds & milliseconds in Real, convert to a time of dayTibco Spotfire - Real 中的秒和毫秒时间,转换为一天中的时间
【发布时间】:2021-06-18 09:54:52
【问题描述】:

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

示例源数据:

\源文件名: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,0,0,Integer(Floor([Time])),[Time] - Integer(Floor([Time])))

最后一部分只能自己获得毫秒/微秒,但不是上述的一部分。

【问题讨论】:

    标签: etl spotfire timespan


    【解决方案1】:

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

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

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

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

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

    您需要将列格式设置为

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

    【讨论】:

    • 谢谢 - 我知道我这样做会很愚蠢。 - 你知道如何从我的开始时间将时间相加吗?
    猜你喜欢
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2014-11-26
    • 2012-09-27
    • 2016-03-04
    相关资源
    最近更新 更多