2017-01-26 2 views
0

現在、私はYYYYMMDDHHMMSS(年、月、日、時、分、秒)を表す以下の番号20170125102857を持っています。 XSLT 1.0でこの数字をちょうどDD-MM-YYYY(日 - 月 - 年)に変換するにはどうすればよいですか?例えばXSL変換番号(20170125102857)からDD-MM-YYY

20170125102857は25-01-2017

なるはずそして、はい、それはXSLにしておく必要があります。

+0

XSLT-1.0には、これを行うための組み込み関数はありません。 XSLTプロセッサに拡張機能がありますか? – Madeyedexter

+0

私は拡張機能を持っていません(私が知っている)。そして、私は既にビルドイン機能がないことを恐れていました。 – Morganis

+0

入力タイムスタンプの長さが常に固定であれば、これを達成するために 'substring()'関数をたくさん使う必要があるようです。 – Madeyedexter

答えて

1

あなたが入力フォーマットが変更されないことが確実な場合は、上記の式の結果が日付形式DD-MM-YYYYを生成する

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:variable name="var.myDateToConvert_" select="'20170125102857'"/> 
    <xsl:variable name="var.year_" select="substring($var.myDateToConvert_,1,4)"/> 
    <xsl:variable name="var.month_" select="substring($var.myDateToConvert_,5,2)"/> 
    <xsl:variable name="var.day_" select="substring($var.myDateToConvert_,7,2)"/> 

    <xsl:template match="/"> 
    <xsl:value-of select="concat($var.day_,'-',$var.month_,'-',$var.year_)"/> 
    </xsl:template> 

</xsl:stylesheet> 

以下のように、あなたは単に、そのためsubstring()機能を使用することができます。
これは、XSLT 1.0で必要な作業を行う簡単で簡単な方法です。

+0

XSLT文字列は1つのインデックスが付けられています。 'substring()'関数の3番目の引数は、サブ文字列の長さです。だから今年の表現は次のようになります: '' – Madeyedexter

+0

残念、私の悪い、私は見落としましたそれ。私は自分の投稿を編集します。ありがとう! –

+0

0を1に変更してください。 @ Madeyedexterのように。 2017(最初の4つの数字)を選択するには、1(1,4)から始める必要があります。 – Morganis