在Xpath中格式化日期

时间:2013-06-03 17:18:34

标签: sharepoint xslt xpath sharepoint-designer

我正在编辑SharePoint Designer 2010中的dispform.aspx,以便不显示公告列表中的字段创建。 我注意到expir([Expires])日期字段已关闭。 例如:

我的过期日期为2/3/2012,但显示为2012-02-03T04:00:00Z

<xsl:with-param name="dateValue" select="@Expires" />

1 个答案:

答案 0 :(得分:1)

不幸的是,XSLT / XPath 1.0没有日期操作函数(除非你计算EXSLT's "Dates and Times" function之类的东西,我尽量不这样做,因为这些扩展函数并不总是存在)。

如果源和结果格式将保持不变,您可以执行一些基本(虽然难看)的字符串组合来完成您想要的任务。特别是,这个XPath:

concat(
  format-number(substring(., 6, 2), '0'),
  '/',
  format-number(substring(., 9, 2), '0'),
  '/',
  substring(., 1, 4)
)

......应该这样做。

这个基于XSLT的验证:

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

  <xsl:template match="/*">
     <xsl:value-of
       select="concat(
                 format-number(substring(., 6, 2), '0'),
                 '/',
                 format-number(substring(., 9, 2), '0'),
                 '/',
                 substring(., 1, 4)
               )" />
  </xsl:template>

</xsl:stylesheet>

...适用于此提议的XML:

<t>2012-02-03T04:00:00Z</t>

...生成了想要的结果:

2/3/2012