计算从生日xslt的年龄
问题描述:
我有一个变量caled Birthday
它将有价值像1/1/1970
。我需要根据该值计算一个人的年龄。它基本上是从Birthday
变量的currentdate()-year
年开始的一年。但是如何在XSLT中实现这一点?它与Sharepoint DateView webpart相关。有一个datetime
类型的字段Birthday
。我需要使用该字段提取年龄。任何人都可以将我指向正确的方向吗?计算从生日xslt的年龄
答
我最喜欢的任何资源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。
答
你需要的是在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>
答
<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 2.0或1.0? – iND 2012-01-09 18:18:12
1.0因为它是SharePoint,不幸 – 2012-01-09 19:03:18
预期的结果是什么以及源XML文档是什么?请提供。目前尚不清楚你对“年龄”的定义是什么 - 年,或年 - 月,或...? – 2012-01-10 04:05:03