我有一个dateTime变量,我想将其转换为时代的十进制值。 这怎么办?将日期时间转换为xslt中的unix时代
我试着使用:
seconds-from-duration($time, xs:dateTime('1970-01-01T00:00:00'))
,但它只是返回0
请指点。 谢谢。
我有一个dateTime变量,我想将其转换为时代的十进制值。 这怎么办?将日期时间转换为xslt中的unix时代
我试着使用:
seconds-from-duration($time, xs:dateTime('1970-01-01T00:00:00'))
,但它只是返回0
请指点。 谢谢。
该转化:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:sequence select="current-dateTime()"/>
<xsl:sequence select=
"(current-dateTime() - xs:dateTime('1970-01-01T00:00:00'))
div
xs:dayTimeDuration('PT1S')
"/>
</xsl:template>
</xsl:stylesheet>
当在任何XML文档(未使用),产生所需的结果施加 - 当前日期时间和它的Unix时间戳(自1的秒数/ 1/1970):
2010-08-12T06:26:54.273-07:00 1281594414.273
作为XPath不使用除法但提取从持续时间:
for $i in (current-dateTime()-xs:dateTime('1970-01-01T00:00:00Z'))
return ((days-from-duration($i)*86400)+(hours-from-duration($i)*3600)+(minutes-from-duration($i)*60)+(seconds-from-duration($i)))
甲pure xsl 1.0 lib例如:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="https://github.com/ilyakharlamov/pure-xsl/date"
version="1.0">
<xsl:import href="https://raw.github.com/ilyakharlamov/pure-xsl/master/date.xsl"/>
<xsl:template match="/">
<xsl:variable name="time_as_timestamp" select="1365599995640"/>
<xsl:text>time_as_timestamp:</xsl:text><xsl:value-of select="$time_as_timestamp"/><xsl:text>
</xsl:text>
<xsl:variable name="time_as_xsdatetime">
<xsl:call-template name="date:date-time">
<xsl:with-param name="timestamp" select="$time_as_timestamp"/>
</xsl:call-template>
</xsl:variable>
<xsl:text>time_as_xsdatetime:</xsl:text><xsl:value-of select="$time_as_xsdatetime"/><xsl:text>
</xsl:text>
<xsl:text>converted back:</xsl:text>
<xsl:call-template name="date:timestamp">
<xsl:with-param name="date-time" select="$time_as_xsdatetime"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
输出:
time_as_timestamp:1365599995640
time_as_xsdatetime:2013-04-10T13:19:55.640Z
转换回:1365599995640
考虑到LibXML2 _still_不支持XPath 2.0函数 - 在* 20-freaking-15 *中 - 这个答案很棒,完全为我节省了一大堆时间。谢谢! – aendrew 2015-11-11 17:51:12
如何定义“新纪元”? – 2010-08-12 13:04:13
你的问题的答案是:'0'。 seconds-from-duration()只是从提供的xs:duration中提取秒分量的值。你显然希望将持续时间转换为所有秒,然后计算任何“时代”可能。请纠正你的问题。 – 2010-08-12 13:10:24
有关时代的定义,请参阅以下内容:http://en.wikipedia.org/wiki/Unix_time。基本上,这是自1970年1月1日以来的秒数(UTC) – Anna 2010-08-12 13:12:02