Рассчитать возраст в xslt от дня рождения
У меня переменная вызвана Birthday
который будет иметь значение, как 1/1/1970
, Мне нужно рассчитать возраст человека на основе этого значения. Это будет в основном год с currentdate()-year
от Birthday
переменная. Но как мне добиться этого в XSLT? Это связано с веб-частью Sharepoint DateView. Есть поле Birthday
из datetime
тип. Мне нужно извлечь возраст, используя это поле. Может кто-то указать мне верное направление?
3 ответа
<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>
Мой любимый ресурс по всему XSLT - это сайт Дэйва Поусона. В одном разделе рассматриваются манипуляции с датами в XSLT 2.0, и, похоже, есть очень четкие ответы о том, как это сделать.
По сути, вы должны убедиться, что дата в правильном формате, а затем просто используйте вычитание даты:
xs:dateTime(actual-arrival) - xs:dateTime(xs:date(due-date))
(Примечание: я не проверял это.)
XSLT 1 часто задаваемые вопросы находятся по этой ссылке.
Что вам нужно, это несколько сложно в 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>