2015-10-13 93 views
0

我想知道是否可以使用XSLT將當前日期格式轉換爲ISO_8601格式。XSLT將當前日期轉換爲iso_8601

在XML的日期目前被設置爲:

<end_date> 
<![CDATA[ 2015-10-14 23:59:59 ]]> 
+0

請出示ISO_8601格式的個例。幫助人們幫助你 –

+0

2015-10-14T23:59:59Z –

+0

@AdnaanAli你的源代碼沒有時區或時間偏移量,所以在結果中附加「Z」不能被認爲是「轉換」。 –

回答

1

在你的榜樣,

<xsl:value-of select="translate(normalize-space(end_date), ' ', 'T')"/> 

將返回:

2015-10-14T23:59:59 

這是一個有效的ISO 8601表示日期和本地時間。

如果確定給定值是在UTC(雖然我沒有看到你輸入的任何這種跡象),並且要註明這一點的結果,你可以這樣做:

<xsl:value-of select="concat(translate(normalize-space(end_date), ' ', 'T'), 'Z')"/> 

返回:

2015-10-14T23:59:59Z 
+0

謝謝你的工作! –

0

這裏是一個XSLT,做的工作:

<?xml version="1.0" encoding="utf-8" ?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        xmlns:i="http://schemas.datacontract.org/2004/07/Uanet>" 
         > 
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> 

    <xsl:template match="end_date"> 
     <!--copy current node--> 
     <xsl:copy> 
     <xsl:apply-templates select="text()" /> 
     </xsl:copy> 
    </xsl:template> 

    <!-- 
    input : 2015-10-14 23:59:59 
    output : 2015-10-14T23:59:59Z 
    --> 
    <xsl:template match="text()"> 
     <xsl:variable name="trimmed" select="." /> 
     <xsl:value-of select="substring($trimmed,0,12)" /> 
     <xsl:text>T</xsl:text> 
     <xsl:value-of select="substring($trimmed,13,8)" /> 
     <xsl:text>Z</xsl:text> 
    </xsl:template> 

    </xsl:stylesheet>