2016-12-06 2 views
1

Мой XML имеет строку даты, которая выглядит любит этоформатирование не статические строки даты XSLT XML

<row id="1"> 
    <DocDueDate>12/06/2016 12:00:00 AM</DocDueDate> 
</row> 

Я пытаюсь отформатировать его с помощью XSLT

<shipdate> 
    <!--YYYY-DD-MM--> 
    <xsl:variable name="var_shipdate" select="row/DocDueDate" /> 
    <xsl:value-of select="concat(substring($var_shipdate, 7, 4), '-', substring($var_shipdate, 1, 2), '-', substring($var_shipdate, 4, 2)) " /> 
</shipdate> 

Это дает выход как этот

<shipdate> 
20161206   
</shipdate> 

Купите мою конкатенацию строк в xslt и произведет неправильный вывод, если меняет формат даты от MM/DD/YYYY к MM/D/YYYY или M/D/YYYY или M/DD/YYYY

Так как я управлять моей конкатенации для получения выходного сигнала, как YYYYMMDD
независимо от моего исходного формата XML .. мне нужно раздуть его с нулями, но как я разделить мой источник строка на '/'

+1

Для возможного решения см http://stackoverflow.com/questions/500915/format-a-date-in-xml-via- XSLT – Meyer

ответ

1

Попробуй так:

<shipdate> 
    <!--YYYY-DD-MM--> 
    <xsl:variable name="date" select="substring-before(row/DocDueDate, ' ')" /> 
    <xsl:variable name="year" select="substring-after(substring-after($date, '/'), '/')" /> 
    <xsl:variable name="month" select="substring-before($date, '/')" /> 
    <xsl:variable name="day" select="substring-before(substring-after($date, '/'), '/')" /> 

    <xsl:value-of select="$year" /> 
    <xsl:value-of select="format-number($month, '-00')" /> 
    <xsl:value-of select="format-number($day, '-00')" /> 
</shipdate> 
Смежные вопросы