将日期格式从YYYY-MM-DD(2018-08-21)转换为MMM-DD-YYY(2018年8月21日)

时间:2018-08-21 16:24:48

标签: xslt xslt-1.0

希望了解如何使用xsl 1.0转换以下日期格式:

YYYY-MM-DD 至 MMM-DD-YYY

例如: 2018-08-21 至 2018年8月21日

谢谢!

1 个答案:

答案 0 :(得分:0)

XSLT 2.0 或使用format-date()的版本中,此操作会容易得多:

format-date(xs:date('2018-08-21'), '[MNn,*-3]-[D]-[Y]')

下面的 XSLT 1.0 解决方案使用substring()来标识日期成分,使用带有参数的命名模板将日期转换为缩写,然后使用concat()来标识日期。产生最终结果。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:template match="/">
        <xsl:call-template name="MMM-DD-YYY">
            <xsl:with-param name="date" select="'2018-08-21'"/>
        </xsl:call-template>
    </xsl:template>

    <xsl:template name="MMM-DD-YYY">
        <xsl:param name="date"/>

        <xsl:variable name="year" select="substring($date, 1,4)"/>
        <xsl:variable name="day" select="substring($date, 9, 2)"/>
        <xsl:variable name="month">
            <xsl:call-template name="month-abbr">
                <xsl:with-param name="month" select="number(substring($date, 6, 2))"/>
            </xsl:call-template>
        </xsl:variable>

        <xsl:value-of select="concat($month,'-',$day,'-',$year)"/>
    </xsl:template>

    <xsl:template name="month-abbr">
        <xsl:param name="month"/>
        <xsl:choose>
            <xsl:when test="$month = 1">Jan</xsl:when>
            <xsl:when test="$month = 2">Feb</xsl:when>
            <xsl:when test="$month = 3">Mar</xsl:when>
            <xsl:when test="$month = 4">Apr</xsl:when>
            <xsl:when test="$month = 5">May</xsl:when>
            <xsl:when test="$month = 6">Jun</xsl:when>
            <xsl:when test="$month = 7">Jul</xsl:when>
            <xsl:when test="$month = 8">Aug</xsl:when>
            <xsl:when test="$month = 9">Sep</xsl:when>
            <xsl:when test="$month = 10">Oct</xsl:when>
            <xsl:when test="$month = 11">Nov</xsl:when>
            <xsl:when test="$month = 12">Dec</xsl:when>
        </xsl:choose>
    </xsl:template>

</xsl:stylesheet>