2014-01-23 2 views
0

Я хочу получить дату завтра с использованием даты exslt.EXSLT дата: добавить функцию имеет неожиданные результаты

date:date() возвращает сегодня дату ('2014-01-23'), и если я добавляю 1 день ('P1D'), я ожидаю, что это будет завтра ('2014-01-24'). Но вместо этого результат

<xsl:value-of select="date:add(date:date(), 'P1D')"/> 

is '2014-01-23T23: 00: 00Z'.

ответ

1

Потребовалось некоторое время исследования, но в конце концов я решил эту проблему:

Проблема с моей предыдущей реализации была вызвана часового пояса. Точное возвращаемое значение date:date() - '2014-01-23 + 01: 00' (дата с часовым поясом, для меня это +01: 00).

Добавление длительности с помощью date:add(string, string) похоже на проблему. Поэтому, чтобы получить правильный результат, я просто отрезал часовой пояс от сегодняшней даты. Результат

<xsl:value-of select="date:add(substring(date:date(), 1, 10), 'P1D')"/> 

Дата завтрака ('2014-01-24'), как ожидалось.

+0

Как добавить второй? каково будет значение продолжительности для этого – iRamesh

+0

@iRamesh Извините за поздний ответ. Чтобы добавить секунду, это будет «PT1S». Используемый синтаксис - это синтаксис длительности, указанный в ISO 8601. «T» - это разделитель даты и времени. Перед разделителем это Y = год, M = месяц, D = день, а после разделителя - H = час; M = минута; S = второй. Как вы видите, «Т» важно различать месяцы от минут. –

Смежные вопросы