我想转换这个
5/21/15 13:47
到YYYY-DD-MMTHH:MI:SS
源格式为d(or)dd/m(or)mm/yy hh:mm
我该怎么做?
给出示例输入:
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年之间。
像这样:
<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>