MrF*_*Fox 14 xslt datetime xslt-2.0
我有一个带有时间戳的XML,如下所示:
<node stamp="1236888746689" />
Run Code Online (Sandbox Code Playgroud)
我想在结果HTML中将它们显示为日期和时间.有没有办法用XSLT(任何版本)做到这一点?
编辑: 我正在使用XSLT2.0与Saxon9.基准日期是1970-01-01 0:00.
f3l*_*lix 18
您可以获取日期1970-01-01T00:00:00并添加与图章值告诉您的毫秒数:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/TR/xhtml1/strict">
<xsl:template match="node">
<xsl:value-of
select='xs:dateTime("1970-01-01T00:00:00") + @stamp * xs:dayTimeDuration("PT0.001S")'/>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
如果您使用的是支持EXSLT日期函数的XSLT 1.0处理器(我刚用PHP中的libxslt对其进行了测试),您可以使用date:add()和date:duration():
<xsl:value-of select="date:add('1970-01-01T00:00:00Z', date:duration(@stamp div 1000))"/>
Run Code Online (Sandbox Code Playgroud)
该date:duration()函数需要几秒钟(因此您必须将毫秒除以1000)并将其转换为"持续时间"(在本例中为" P14315DT20H12M26.6889998912811S"),然后将其添加到您的纪元的开头(看起来像标准这个邮票的时代,date:add()以获得" 2009-03-12T20:12:26.6889998912811Z" 的印章.然后,您可以使用EXSLT日期函数或仅substring()根据您的需要对其进行格式化.