2012-01-09 12 views
0

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

+0

Является ли это XSLT 2.0, или 1,0? – iND

+0

1.0, так как это SharePoint, к сожалению –

+0

Каков ожидаемый результат и каков исходный XML-документ? Пожалуйста предоставьте. Неясно, каково ваше определение «возраст» - годы, или годы-месяцы, или ...? –

ответ

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> 
Смежные вопросы