我想轉換此XSLT DateTime格式轉換爲YYYY-DD-MMTHH:MI:SS
5/21/15 13:47
到YYYY-DD-MMTHH:MI:SS
源格式是d(or)dd/m(or)mm/yy hh:mm
我怎樣才能做到這一點?
我想轉換此XSLT DateTime格式轉換爲YYYY-DD-MMTHH:MI:SS
5/21/15 13:47
到YYYY-DD-MMTHH:MI:SS
源格式是d(or)dd/m(or)mm/yy hh:mm
我怎樣才能做到這一點?
事情是這樣的:
<xsl:analyze-string select="$in"
regex="(\d+)/(\d+)/(\d+) (\d+):(\d+)">
<xsl:matching-substring>
<xsl:value-of select="'20',
format-number(number(regex-group(3)), '00'),
'-',
format-number(number(regex-group(1)), '00'),
'-',
format-number(number(regex-group(2)), '00'),
'T',
format-number(number(regex-group(4)), '00'),
':',
format-number(number(regex-group(5)), '00'),
':00'"
separator=""/>
</xsl:matching-substring>
</xsl:analyze-string>
這似乎有幾個錯誤:http://xsltransform.net/pPqsHTU –
我確實說過「類似」...我已經刪除了一些更明顯的錯誤(但仍未測試)。 –
給出的例子輸入:
XML
<given-date>5/21/15 13:47</given-date>
你可以使用:
XSLT 2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="given-date">
<result>
<xsl:variable name="dte" select="tokenize(.,'/|\s')" />
<xsl:value-of select="concat('20', $dte[3], format-number(number($dte[1]), '-00'), format-number(number($dte[2]), '-00'), 'T', $dte[4], ':00')" />
</result>
</xsl:template>
</xsl:stylesheet>
返回:
<?xml version="1.0" encoding="UTF-8"?>
<result>2015-05-21T13:47:00</result>
注意,這裏假設你所有的日期是在2000年和2099年
請選擇要麼XSLT 1.0或2.0,而不是在兩者之間。 –
嗨邁克爾。編輯該問題僅添加xslt 2.0 – Tigga
您可以使用'xsl:analyze-string'來提取組件,然後您可以構建'xs:dateTime'值。但是,您需要先決定如何將兩位數年份值轉換爲四位數值。 –