Вопрос

Я пытаюсь получить количество месяцев между двумя датами в моем файле xslt следующим образом:

<xsl:variable name="now" select="umbraco.library:CurrentDate()"/>
<xsl:value-of select="umbraco.library:DateDiff('2010-12-01', $now, 'm')" />

К сожалению, это, кажется, дает мне количество минут между двумя датами, а не количество месяцев. Я нигде не могу найти строку для ввода в качестве третьего параметра в течение нескольких месяцев. Есть ли где-нибудь ссылки на это? Или как узнать количество месяцев?

Это было полезно?

Решение

Метод DateDiff не поддерживает месяцы.

Он поддерживает только годы, минуты или секунды.

Чтобы рассчитать разницу в месяцах, вам нужно выполнить несколько математических манипуляций, использовать встроенный метод c # или написать собственный метод расширения XSLT.

Подробнее о встроенном c #

Существует множество учебных пособий по созданию методов расширения XSLT, в том числе несколько видеоуроков на главном сайте umbraco.

Подробнее о расширениях XSLT

Видео Umbraco о расширениях XSLT

Другие советы

В итоге я написал свою собственную функцию, как предложил Тим:

public static int MonthDiff(string date1, string date2)
{
    DateTime dt1 = DateTime.Parse(date1);
    DateTime dt2 = DateTime.Parse(date2);

    return ((dt2.Year - dt1.Year) * 12) + (dt2.Month - dt1.Month);
}

Я уверен, что это могло бы быть лучше обобщено, но этого было достаточно для меня.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top