преобразовать значение даты в строковый формат даты в xslt - PullRequest
0 голосов
/ 11 марта 2019

Я получаю значение даты как «2018-08-03 00: 00: 00.0» из xml Мне нужно преобразовать это в формат '08 -MAR-2018 '. Как я могу это сделать? пожалуйста, помогите.

xsl-код для получения даты из xml:

<xsl:variable name="createDate" select="$XmlRoot/attributes/attribute[@identifier='createdate']/value"/>

и я хочу получить к нему доступ здесь:

<value><xsl:value-of select="$createDate"/></value>

- это значение должно быть в формате '08 -MAR-2018 '(не обязательно, чтобы значение было переменной даты, строковая переменная тоже в порядке) Я нашел несколько ссылок с подстрокой, но мне нужно знать, как конвертировать месяц в JAN, FEB, MAR и т. Д.

1 Ответ

2 голосов
/ 11 марта 2019

Попробуйте:

<value>
    <xsl:value-of select="substring($createDate, 9, 2)"/>
    <xsl:text>-</xsl:text>
    <xsl:variable name="month" select="substring($createDate, 6, 2)"/>
    <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:text>-</xsl:text>
    <xsl:value-of select="substring($createDate, 1, 4)"/>
</value>

Или, если вы предпочитаете:

<value>
    <xsl:value-of select="substring($createDate, 9, 2)"/>
    <xsl:text>-</xsl:text>
    <xsl:variable name="month" select="substring($createDate, 6, 2)" />
    <xsl:value-of select="substring('JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC', 3 * ($month - 1) + 1, 3)"/>
    <xsl:text>-</xsl:text>
    <xsl:value-of select="substring($createDate, 1, 4)"/>
</value>

Обратите внимание, что в данном примере значение $createDate равно 2018-08-03 00:00:00.0результат будет:

<value>03-AUG-2018</value>

, а не '08-MAR-2018', как указано в вашем вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...