XSLT - 格式日期 - 删除毫秒

时间:2012-12-11 21:30:00

标签: xslt

我正在使用XSLT创建XML文件。日期时间有毫秒。我需要输出XML而不是毫秒。

格式必须为YYYY-MM-DDTHH:MM:SS

例如:

XML将日期显示为:2012-12-341T09:26:53.132-0500

但这必须是:2012-12-341T09:26:53

3 个答案:

答案 0 :(得分:1)

如果您使用的是XSLT2,请参阅此函数:http://www.w3.org/TR/xslt20/#function-format-dateTime。这个图片字符串应该给你你想要的东西:

format-dateTime($dateTime,'[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]')

答案 1 :(得分:1)

如果所有值都是dateTime并且.,则可以使用 substring-before()

substring-before('2012-12-341T09:26:53.132-0500', '.')

您可以使用 substring() 来选择前20个字符:

substring('2012-12-341T09:26:53.132-0500', 0, 21)

答案 2 :(得分:0)

此XPath表达式产生想要的结果,无论字符串是包含点还是连字符,还是包含点和连字符,或者没有,并且不依赖于用于年,月,日的数字位数< /强>:

    substring-before(concat(substring-before(concat(substring-after(.,'T'),
                                                    '.'),
                                             '.'),
                           '-'),
                     '-')

这是一个使用此XPath表达式的简单XSLT转换

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="dt/text()">
   <xsl:value-of select="substring-before(., 'T')"/>
   <xsl:text>T</xsl:text>
   <xsl:value-of select=
   "substring-before(concat(substring-before(concat(substring-after(.,'T'),
                                                    '.'),
                                             '.'),
                           '-'),
                     '-')
   "/>
 </xsl:template>
</xsl:stylesheet>

在此测试XML文档上应用此转换时:

<t>
 <dt>2012-12-341T09:26:53.132-0500</dt>
 <dt>2012-12-355T09:34:56</dt>
 <dt>2012-12-355T09:34:56-0500</dt>
 <dt>2012-12-13T9:34:5-0500</dt>
 <dt>2012-12-344T09:12:34.378-0500</dt>
</t>

产生了想要的正确结果:

<t>
   <dt>2012-12-341T09:26:53</dt>
   <dt>2012-12-355T09:34:56</dt>
   <dt>2012-12-355T09:34:56</dt>
   <dt>2012-12-13T9:34:5</dt>
   <dt>2012-12-344T09:12:34</dt>
</t>

<强>解释

正确应用 sentinels