DateDiff по месяцам в Умбрако - PullRequest
0 голосов
/ 17 июня 2009

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

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

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

Ответы [ 2 ]

3 голосов
/ 17 июня 2009

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

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

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

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

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

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

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

0 голосов
/ 17 июня 2009

Я закончил писать свою собственную функцию, как предложил Тим:

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);
}

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

...