0

我试图在我的 xslt 文件中获取两个日期之间的月数,如下所示:

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

不幸的是,这似乎给了我两个日期之间的分钟数,而不是月数。几个月来,我在任何地方都找不到要作为第三个参数输入的字符串。在某处有这个参考吗?或者我如何找到月数?

4

2 回答 2

3

DateDiff 方法不支持月份。

它只支持年、分或秒。

要计算以月为单位的差异,您需要进行一些数学运算或使用内联 c# 方法或编写您自己的 XSLT 扩展方法。

有关内联 c# 的更多信息

有许多创建 XSLT 扩展方法的教程,包括他的主要 umbraco 站点上的几个视频教程。

有关 XSLT 扩展的更多信息

关于 XSLT 扩展的 Umbraco 视频

于 2009-06-17T06:49:36.683 回答
0

我最终像 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);
}

我敢肯定它可以更好地概括,但这对我来说已经足够了。

于 2009-06-17T14:44:44.393 回答