我必须承认,我是一个完全的菜鸟。所以,我提前道歉,因为我认为我所要求的是相当基本的。我现在处于早期学习阶段,所以请耐心等待。
示例XML记录:
<ArrayOfMessage>
<Message>
...
<LocalTimestamp>130979673444601802</LocalTimestamp>
...
</ArrayOfMessage>
</Message>
预期目标:
将130979673444601802除以(10 * 1000 * 1000) - 11644473600.这相当于1453497841.6748905;或者,原始值的等效Unix纪元时间。我需要这个epoch value,以便我可以在下面应用日期/时间模板。希望到达的日期/时间格式是我可以用来排序的日期/时间格式,以及一个不那么神秘(即更具可读性)的日期/时间格式。
<xsl:template match="LocalTimestamp">
<xsl:value-of
select='xs:dateTime("1970-01-01T00:00:00") + @stamp * xs:dayTimeDuration("PT0.001S")'/>
</xsl:template>
非常感谢任何建议或意见。谢谢!
答案 0 :(得分:0)
AFAICT,你想做:
<xsl:value-of select="xs:dateTime('1970-01-01T00:00:00') + (. div 10000000 - 11644473600) * xs:dayTimeDuration('PT1S')"/>
应用于值为130979673444601802
的节点,结果为:
2016-01-22T20:15:44.46018
当然,如果你从一开始就明确表示给定的数字http://docs.ansible.com/ansible/command_module.html,那么通过Unix时间转换是不必要的并发症就显而易见了。您可以通过以下方式将给定数字直接转换为日期:
<xsl:value-of select="xs:dateTime('1601-01-01T00:00:00') + . div 10000000 * xs:dayTimeDuration('PT1S')"/>