DateDiff по месяцам в Умбрако
Вопрос
Я пытаюсь получить количество месяцев между двумя датами в моем файле xslt следующим образом:
<xsl:variable name="now" select="umbraco.library:CurrentDate()"/>
<xsl:value-of select="umbraco.library:DateDiff('2010-12-01', $now, 'm')" />
К сожалению, это, кажется, дает мне количество минут между двумя датами, а не количество месяцев. Я нигде не могу найти строку для ввода в качестве третьего параметра в течение нескольких месяцев. Есть ли где-нибудь ссылки на это? Или как узнать количество месяцев?
Решение
Метод DateDiff не поддерживает месяцы. Р>
Он поддерживает только годы, минуты или секунды. Р>
Чтобы рассчитать разницу в месяцах, вам нужно выполнить несколько математических манипуляций, использовать встроенный метод c # или написать собственный метод расширения XSLT. Р>
Существует множество учебных пособий по созданию методов расширения XSLT, в том числе несколько видеоуроков на главном сайте umbraco.
Другие советы
В итоге я написал свою собственную функцию, как предложил Тим:
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);
}
Я уверен, что это могло бы быть лучше обобщено, но этого было достаточно для меня.