从生日计算xslt的年龄

时间:2012-01-09 17:19:11

标签: sharepoint xslt date web-parts dataview

我有一个变量caled Birthday,其值为1/1/1970。我需要根据该值计算一个人的年龄。它基本上是来自currentdate()-year变量的Birthday的年份。但是我如何在XSLT中实现这一目标?它与sharepoint DateView webpart有关。 Birthday类型的字段datetime。我需要使用该字段提取年龄。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:0)

我最喜欢XSLT的资源是Dave Pawson's website。一节涉及date manipulations in XSLT 2.0,它似乎对如何做到这一点有非常明确的答案。

基本上,您必须确保日期格式正确,然后只使用日期减法:

xs:dateTime(actual-arrival) - xs:dateTime(xs:date(due-date))

(注意:我没有测试过这个。)

XSLT 1常见问题是at this link

答案 1 :(得分:0)

你需要的东西在XSLT 1.0中有点复杂,如果你更容易使用javascript你可以做这样的事情:

<div id="mydate"></div>

<script type="text/javascript">
<![CDATA[

      function datejs(datexslt) {
        var date = datexslt.split('T')[0].split('-');
        var time = datexslt.split('T')[1].split(':');
        return new Date(date[1] + '/' + date[2] + '/' + date[0] + ' ' + time[0] + ':' + time[1] + ':' + time[2].substr(0, 2) + ' UTC'); 
      }

      var utc = datejs(']]><xsl:value-of select="@PublishedDate" /><![CDATA[');

      //$('#mydate').text(utc);

]]>
</script>

答案 2 :(得分:0)

<xsl:variable name="Age">
    <xsl:choose>
        <xsl:when test="month-from-date(current-date()) > month-from-date($Birthday) or month-from-date(current-date()) = month-from-date($Birthday) and day-from-date(current-date()) >= day-from-date($Birthday)">
            <xsl:value-of select="year-from-date(current-date()) - year-from-date($Birthday)" />
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="year-from-date(current-date()) - year-from-date($Birthday) - 1" />
        </xsl:otherwise>
    </xsl:choose>
</xsl:variable>