Как преобразовать дату в XSLT2.0?

#xslt-2.0 #formatdatetime

#xslt-2.0 #formatdatetime

Вопрос:

Как я могу отформатировать приведенную ниже дату, чтобы она отображалась следующим образом: ММ / дд / ГГГГ (например: 04.05.2020)?

Поле $getField будет: 2020-05-04T15:00:12

Мое значение в шаблоне: <xsl:value-of select="xs:dateTime($getField) xs:dayTimeDuration('PT1H')"/>

В настоящее время он отображается следующим образом: 2020-04-05T16:00:12

Каждый раз, когда я пытаюсь использовать format-date, я получаю сообщение об ошибке. Кроме того, если я буду использовать xs:date(xs:dateTime($getField) xs:dayTimeDuration('PT12H')) , он будет отображать только дату, без часов / минут, но все еще не уверен, как я могу изменить порядок для даты?

Спасибо!

Комментарии:

1.Вы смотрели на спецификацию format-dateTime w3.org/TR/xslt20/#function-format-dateTime ? Какие аргументы вы пробовали, какие именно ошибки вы получили? Может быть трудно запомнить детали, но, глядя на примеры в w3.org/TR/xslt20/#date-time-examples и их адаптация должна стать хорошей отправной точкой.

2. Спасибо! Примеры очень полезны, раньше я не находил эту страницу, я все еще новичок в XSLT2.0. Изначально я пробовал так format-date(xs:dateTime($getField) xs:dayTimeDuration('PT12H'),'[M]/[D]/[Y]') , и ошибка заключалась в том, что первым аргументом format-date должна была быть дата. Затем я понял, что мне нужно изменить на дату только мое значение. Он отлично работает следующим образом: format-date(xs:date(xs:dateTime($getField) xs:dayTimeDuration('PT12H')),'[M]/[D]/[Y]') Большое вам спасибо.

Ответ №1:

Используйте format-dateTime() функцию с нужным изображением «[M01] / [D01]/ [Y0001]»:

 format-dateTime(xs:dateTime($getField) xs:dayTimeDuration('PT1H'), "[M01]/[D01]/[Y0001]")