1

遵循这个建议:如何使用 XSLT 将刻度转换为可读的日期时间?它显示了如何将 Unix 时间戳格式转换为人类可读的日期时间格式,我想用 XSL转换Windows 64 位文件时间结构:

<xsl:value-of select="xs:dateTime('1960-01-01T00:00:00Z') + @WDT * xs:dayTimeDuration('PT0.0000001S')"/>

其中@WDT 属性表示 Windows 64 位日期时间编号。

但是我没有得到想要的结果。我得到 ie date: "2371-06-30T01:10:04.34375Z" for "129854922043437500",而我预期:"30.06.2012 03:10:04"
这种方法有什么问题?

4

1 回答 1

1

主要问题是您使用的初始数据——正确的日期是 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
于 2012-10-14T05:16:57.060 回答