Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
356 views
in Technique[技术] by (71.8m points)

xml - XSLT ISO 8601 Time format

I have an XML where I get this attribute:

Trans_dtmBookingStamp="Fri, 15 Nov, 2013 @ 3:20pm"

I want to convert the time stamp, with XSLT, to an ISO8601 Format like this:

2013-11-13T15:20:00+02:00
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

See if this can get you started:

<xsl:template name="convertDate">
    <xsl:param name="datestring" />

    <xsl:param name="d" select="substring-before(substring-after($datestring, ' '), ' ')"/>
    <xsl:param name="mmm" select="substring(substring-after(substring-after($datestring, ' '),' '), 1, 3)"/>
    <xsl:param name="m" select="string-length(substring-before('JanFebMarAprMayJunJulAugSepOctNovDec', $mmm)) div 3 + 1"/>
    <xsl:param name="y" select="substring(substring-after($datestring, $mmm), 3 , 4)"/>
    <xsl:param name="ymmdd" select="10000*$y+100*$m+$d"/>
    <xsl:param name="mm" select="substring($ymmdd, 5, 2)"/>
    <xsl:param name="dd" select="substring($ymmdd, 7, 2)"/>

    <xsl:value-of select="concat ($y, '-', $mm, '-', $dd, 'T')" />
</xsl:template>

Calling this template with a datestring parameter of "Fri, 15 Nov, 2013 @ 3:20pm" will return a value of "2013-11-15T". The time portion is left as an exercise for the reader.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...