我试图在我的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 exensions的更多信息

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

我确信它可以更好地推广,但这对我来说已经足够了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top