遵循这个建议:How to convert ticks into a readable datetime with XSLT?显示如何以人类可读的日期时间格式转换Unix时间戳格式,我想用XSL转换Windows 64-bit filetime structure:
<xsl:value-of select="xs:dateTime('1960-01-01T00:00:00Z') + @WDT * xs:dayTimeDuration('PT0.0000001S')"/>
其中@WDT属性表示Windows 64位日期时间编号。
但是我没有得到理想的结果。我得到了日期:“2371-06-30T01:10:04.34375Z”为“129854922043437500”,而我期待:“30.06.2012 03:10:04”
这种方法可能有什么问题?
答案 0 :(得分:1)
主要问题是你正在使用的初始dtae - 正确的日期是1601年1月1日。
<强>因此强>:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:value-of select=
"xs:dateTime('1601-01-01T00:00:00Z')
+ 129854922043437500 idiv 10000000 *xs:dayTimeDuration('PT1S')"/>
</xsl:template>
</xsl:stylesheet>
应用于任何XML文档(未使用)时,会产生所需的正确结果:
2012-06-30T01:10:04Z