斯潘8
斯潘4
您好!马里奥菲德里斯
DateTimeCalculator只接受FME格式的日期时间值。即。,在尝试计算间隔之前,您需要使用datetimeconverter更改值格式。
@ LenaA亚搏在线tSafe是正确的。
它们是从文本编辑器中的以下表达式创建的:@datetimeformat(@value(datestarted),%m/%d/%y)@datetimeformat(@format(%04d00,@value(timestarted)),%l:%m%p)
根据你上面的描述,“datestarted”的格式似乎是%y%m%d(标准FME日期格式),“TimeStarted”的格式似乎是%k%m。如果是这样,可以使用此表达式将其转换为标准的FME日期/时间格式(%y%m%d%h%m%s)。
@value(datestarted)@格式(%04D00,@value(timestarted))
克里斯,我以前用上述表达式尝试过属性管理器,但收到以下消息:“attributeManager:未能将“01/11/18 5:00 am”解析为日期时间值。不知道我错过了什么。
您的示例中的输入似乎是日期时间数据类型而不是字符串
在读卡器功能类型参数中,是否尝试将TimeStartedTzone和TimeEndedTzone的类型设置为日期时间?
您可以通过访问读卡器>更新功能类型或右键单击导航器窗格中的读卡器功能类型来完成此操作。
也许我应该进一步解释一下。TimeStartedTzone和TimeEndedTzone实际上是在属性管理器中创建的字段(请参见下文)。
它们是从文本编辑器中的以下表达式创建的:@datetimeformat(@value(datestarted),%m/%d/%y)@datetimeformat(@format(%04d00,@value(timestarted)),%l:%m%p)
不幸的是,这两个属性不在功能阅读器中,但是,相反,在翻译中创建。因此,我不能改变他们的类型。或者我不确定怎么做。
马里奥菲德里斯-尝试使用StringSearcher从字符串中提取时间并将其保存到新属性。然后,将时间转换为FME输出格式,然后将其传递到日期时间计算器。您需要将输入格式设置为
%H:%m
然后,可以使用带有在StringSearcher中创建的StartTime和EndTime属性的DateTimeCalucator计算时差(持续时间)。
我尝试了推荐的设置,但是功能仍然被拒绝。
我还尝试了提供相同结果的工作区。我收到以下消息:“FME_expression_warnings_0.message(string):无法计算表达式“@datetimediff(7:22,5:52,hours)”。结果设置为空'
截图的链接断开了,但一般来说,这是一种方法:
原因有二:
在DateTimeConverter中尝试以下操作:
%d/%m/%y%l:%m%p
这将让我们发现datetimeconverter的一个弱点,因为它似乎无法在输入掩码中处理两位数的年份,因为一些奇怪的原因。
我首先使用了一个StringReplacer将“20”添加到年份中,从而解决了这个问题:
但既然你在属性管理器中创建了时间戳,通过“修复”那里的时间戳,您可能会过得更好。
戴维我接着修改了TimeStartedTzone和TimeEndedTzone的格式,用%y来包含一个4位数的年份。
但是当我添加推荐的日期时间计算器时,输入似乎被拒绝,并显示以下消息:
fme_expression_warnings_0.message(string):无法评估表达式“@datetimediff(01/11/2018 7:22 am,01/11/2018 5:52 am,hours)”。结果设置为空
这些是我的设置:
?2019安全亚搏在线软件公司|合法的