题
我试图在我的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);
}
我确信它可以更好地推广,但这对我来说已经足够了。
不隶属于 StackOverflow