2017-11-17 10 views
1

これは私がtimestampXSLTを使用して日付と時刻を抽出するには?

Date=2017-06-12 
time=13:49:03 

を必要と私は

<test> 
    <conversationId>495</conversationId> 
    <conversation> 
     <origination>DB</origination> 
     <Content> 
      <transactions> 
       <merchantCountry>840</merchantCountry> 
       <timestamp>2017-06-12T13:49:03.343Z</timestamp> 

</test> 

を持つ要求である私は唯一のHHを必要とする:MM:SSは、後には何も必要ありません。

期待される出力

time=13:49:03 

私は解決策は、しかし、私は同じが単一のステートメントで行うことができる場合、私は思っていた二つの変数

<xsl:variable name="time" select="/test/conversation/Content/transactions/timestamp"/> 
    <xsl:variable name="timechange"> 
       <xsl:value-of select="substring-after($time, 'T')"/> 
      </xsl:variable> 
      <xsl:variable name="timechange1"> 
       <xsl:value-of select="substring-before($timechange, '.')"/> 
      </xsl:variable> 

を使用していることをやっています。

<xsl:value-of select="substring-after(substring-before($time, 'T'), '.')" /> but nothing came. 

更新:

"timestamp": "2017-07-12T13:49:03.343Z", 
                "timestamp": "2017-07-12T13:49:03Z", 
                "timestamp": "2017-07-12T13:49:03.343-00:05", 
                "timestamp": "2017-07-12T13:49:03.343+00:15", 
                "timestamp": "2017-07-12T13:49:03+01:05", 
                "timestamp": "2017-07-12T13:49:03-01:05", 

答えて

0

あなたのサブ-後は、前のサブストリングする必要がありますし、あなたの-前のサブストリングは、サブストリング-後にする必要があります。

の代わりに:

<xsl:value-of select="substring-after(substring-before($time, 'T'), '.')" /> 

試してみてください。

<xsl:value-of select="substring-before(substring-after($time, 'T'), '.')" /> 

追加の連結を追加し、.が含まれていないのdateTimeの...

<xsl:value-of select="substring-before(concat(substring-after($time, 'T'),'.'), '.')" /> 

またはsubstring()を使用を処理するために、 ...

<xsl:value-of select="substring($time,12,8)" /> 

2017-06-12T13:49:03.343Z2017-06-12T13:49:03の両方で動作します。

+1

本当に私の側から愚かな間違いだった。それは私のために長いです。 –

+0

@Kumar_y - あなたは大歓迎です。私の間違いのほとんどは愚かです。 :-) –

+0

私はしようとしていますが、私は5分間待つというエラーが表示されています:( –

関連する問題