2012-01-09 56 views
0

1/1/1970のような値を持つ変数Birthdayがあります。私はその価値に基づいて人の年齢を計算する必要があります。基本的にはBirthday変数のcurrentdate()-yearの年となります。しかし、これをXSLTでどうやって達成するのですか?これは、SharepointのDateView webpartに関連しています。フィールドBirthdaydatetimeタイプです。私はそのフィールドを使って年齢を抽出する必要があります。誰かが私を正しい方向に向けることができますか?xsltの年齢を誕生日から計算する

+0

は、このXSLT 2.0、または1.0ですか? – iND

+0

1.0これはSharePointなので残念なことに –

+0

予想される結果は何か、ソースXMLドキュメントは何ですか?どうか提供してください。あなたの「年齢」の定義が何年、何年か、何年というのかは分かりません。 –

答えて

0

XSLTのための私のお気に入りのリソースはDave Pawson's websiteです。 1つのセクションではdate manipulations in XSLT 2.0を扱っていますが、これを行う方法については非常に明確な回答があるようです。

基本的に、あなたはちょうど日付の減算を使用して、日付が正しい形式であることを確認する必要があります:

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

(注:私はこれをテストしていません)

XSLT 1 faqsはat this linkです。あなたはこのような何かを行うことができますJavaScriptで行くより簡単にしている場合、あなたが必要なもの

0

は、XSLT 1.0で、やや複雑です:

<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> 
関連する問題