рассчитать возраст в xslt от дня рождения - PullRequest
0 голосов
/ 09 января 2012

У меня есть переменная caled Birthday, которая будет иметь значение типа 1/1/1970. Мне нужно рассчитать возраст человека на основе этого значения. В основном это будет год от currentdate()-year из переменной Birthday. Но как мне добиться этого в XSLT? Это связано с веб-частью Sharepoint DateView. Есть поле Birthday типа datetime. Мне нужно извлечь возраст, используя это поле. Кто-нибудь может указать мне правильное направление?

Ответы [ 3 ]

0 голосов
/ 09 января 2012

Что вам нужно, это несколько сложно в 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>
0 голосов
/ 09 января 2012
<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>
0 голосов
/ 09 января 2012

Мой любимый ресурс по всему XSLT - Сайт Дэйва Поусона . Один из разделов посвящен манипуляциям с датой в XSLT 2.0 , и, похоже, есть очень четкие ответы о том, как это сделать.

По сути, вы должны убедиться, что дата в правильном формате, а затем просто использовать вычитание даты:

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

(Примечание: я не проверял это.)

Часто задаваемые вопросы XSLT 1 по этой ссылке .

...