DateDiff por meses em Umbraco
Pergunta
Eu estou tentando obter o número de meses entre duas datas no meu arquivo xslt assim:
<xsl:variable name="now" select="umbraco.library:CurrentDate()"/>
<xsl:value-of select="umbraco.library:DateDiff('2010-12-01', $now, 'm')" />
Infelizmente, isso parece-me dar o número de minutos entre as duas datas, em vez do número de meses. Não consigo encontrar em qualquer lugar a corda para entrar como o terceiro parâmetro para meses. Existe são referência para este em algum lugar? Ou como faço para encontrar o número de meses?
Solução
O método DateDiff não suporta meses.
Ele suporta apenas anos, minutos ou segundos.
Para calcular a diferença de meses que você vai precisar fazer alguma matemática malabarismo ou usar um # método em linha c ou escreve sua própria método de extensão XSLT.
Mais informações sobre linha c #
Existem muitos tutoriais para a criação de métodos de extensão XSLT, incluindo vários tutoriais em vídeo sobre ele local umbraco principal.
Outras dicas
acabei escrevendo minha própria função como Tim sugeriu:
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);
}
Eu tenho certeza que ele poderia ser mais bem generalizada, mas isso era bom o suficiente para mim.