2012-01-09 181 views
0

我有一個變量caled Birthday它將有價值像1/1/1970。我需要根據該值計算一個人的年齡。它基本上是從Birthday變量的currentdate()-year年開始的一年。但是如何在XSLT中實現這一點?它與Sharepoint DateView webpart相關。有一個datetime類型的字段Birthday。我需要使用該字段提取年齡。任何人都可以將我指向正確的方向嗎?計算從生日xslt的年齡

+0

這是XSLT 2.0或1.0? – iND 2012-01-09 18:18:12

+0

1.0因爲它是SharePoint,不幸 – 2012-01-09 19:03:18

+0

預期的結果是什麼以及源XML文檔是什麼?請提供。目前尚不清楚你對「年齡」的定義是什麼 - 年,或年 - 月,或...? – 2012-01-10 04:05:03

回答

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

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> 
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>