我的XML格式有时间戳,如 2016-06-07T07:46:04
我想使用xslt转换UTC格式的时间戳,如 1465278364
怎么做?
提前致谢。
答案 0 :(得分:1)
我实际上已经专门为此编写了一个命名模板。这是:
<xsl:template name="converttime">
<xsl:param name="date" select="."/>
<xsl:choose>
<xsl:when test="translate($date,'123456789','000000000') = '0000-00-00T00:00:00'">
<xsl:value-of select="
(
((substring($date,1,4) - 1970) * 365) +
floor((substring($date,1,4) - 1970) div 4) +
substring(
'000,031,059,090,120,151,181,212,243,273,304,334,365',
substring($date,6,2)*4-3, 3
) +
(substring($date,9,2)-1) +
(1-floor(((substring($date,1,4) mod 4) + 2) div 3))*floor((substring($date,6,2)+17) div 20)
) * 86400 +
(substring($date,12,2)*3600) +
(substring($date,15,2)*60) +
substring($date,18,2)
"/>
</xsl:when>
<!-- Unknown format -->
<xsl:otherwise>-1</xsl:otherwise>
</xsl:choose>
</xsl:template>
这加起来:
然后将上述所有内容乘以一天中的秒数 然后,只需添加小时*(一小时内的秒数),分钟*(一分钟内的秒数)和秒数就可以了。
您可以通过将不同的<xsl:when>
元素放在不同的日期模式中来支持不同的日期格式,并显然调整子字符串调用以匹配。
老实说,如果您不能使用XSLT 2.0(或更高版本)或扩展功能,请仅使用此功能。另外,我注意到你给出的数字是7200秒而不是产生的数字,但是如果你所处的时区与UTC不同2小时,那可能就是原因了。