Datetime 在翁布拉科数月的DateDiff

Datetime 在翁布拉科数月的DateDiff,datetime,xslt,umbraco,Datetime,Xslt,Umbraco,我试图在xslt文件中获取两个日期之间的月数,如下所示: <xsl:variable name="now" select="umbraco.library:CurrentDate()"/> <xsl:value-of select="umbraco.library:DateDiff('2010-12-01', $now, 'm')" /> 不幸的是,这似乎给了我两个日期之间的分钟数,而不是月数。几个月来,我在任何地方都找不到作为第三个参数输入的字符串。这里有参考资料

我试图在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主站点上的几个视频教程


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

我相信它可以更好地通用化,但这对我来说已经足够好了。

我最终按照Tim的建议编写了自己的函数:

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);
}
我相信它可以更好地推广,但这对我来说已经足够好了